# Split N^2 numbers into N groups of equal sum

• Last Updated : 11 Jul, 2022

Given an even number N. The task is to consider numbers from 1 to N2, split them into N groups of the equal sum.
Examples

```Input: N = 2
Output: {1, 4}, {2, 3}
Two groups of equal sum are 1, 4 and 2,3

Input: N = 4
Output:
{ 1, 16} { 2, 15}
{ 3, 14} { 4, 13}
{ 5, 12} { 6, 11}
{ 7, 10} { 8, 9}```

Approach: Formula for sum of first N2 numbers: Sum = (N2 * (N2 + 1))/ 2.
Therefore, the sum of each group would be = (N2 + 1)* N2 / 2
Let us consider pairs of the following type (1, N2), (2, N2-1) and so on.
Since N2 is an even number, each group can be made using exactly N/2 such pairs.
Below is the implementation of the above approach:

## C++

 `// C++ implementation of the above approach``#include ``using` `namespace` `std;` `// Function to print N groups of equal sum``void` `printGroups(``int` `n)``{``    ``int` `x = 1;``    ``int` `y = n * n;` `    ``// No. of Groups``    ``for` `(``int` `i = 1; i <= n; i++) {` `        ``// n/2 pairs``        ``for` `(``int` `j = 1; j <= n / 2; j++) {``            ``cout << ``"{ "` `<< x << ``", "` `<< y << ``"} "``;``            ``x++;``            ``y--;``        ``}` `        ``cout << endl;``    ``}``}` `// Driver code``int` `main()``{``    ``int` `n = 4;``    ``printGroups(n);` `    ``return` `0;``}`

## Java

 `// Java implementation of the above approach` `import` `java.io.*;` `class` `GFG {``    `   `// Function to print N groups of equal sum``static` `void` `printGroups(``int` `n)``{``    ``int` `x = ``1``;``    ``int` `y = n * n;` `    ``// No. of Groups``    ``for` `(``int` `i = ``1``; i <= n; i++) {` `        ``// n/2 pairs``        ``for` `(``int` `j = ``1``; j <= n / ``2``; j++) {``            ``System.out.print(``"{ "` `+ x + ``", "` `+ y + ``"} "``);``            ``x++;``            ``y--;``        ``}` `        ``System.out.println();``    ``}``}` `// Driver code` `    ``public` `static` `void` `main (String[] args) {``            ``int` `n = ``4``;``    ``printGroups(n);``    ``}``}``// This code is contributed by shs`

## Python3

 `# Python implementation of the above approach` `# Function to print N groups of equal sum``def` `printGroups(n) :``    ` `    ``x ``=` `1``    ``y ``=` `n ``*` `n``    ` `    ``# No. of Groups``    ``for` `i ``in` `range``(``1``, n ``+` `1``) :``        ` `        ``# n/2 pairs``        ``for` `j ``in` `range``(``1``, n ``/``/` `2` `+` `1``) :``            ` `            ``print``(``"{"``,x,``","``,y,``"}"``,end ``=` `" "``)``            ` `            ``x ``+``=` `1``            ``y ``-``=` `1``        ` `        ``print``()``        ` `       ` `# Driver code``if` `__name__ ``=``=` `"__main__"` `:``    ` `    ``n ``=` `4``    ` `    ``# Function call``    ``printGroups(n)` `# This code is contributed by Ryuga`

## C#

 `// Java implementation of the``// above approach``using` `System;` `class` `GFG``{``    ` `// Function to print N groups``// of equal sum``static` `void` `printGroups(``int` `n)``{``    ``int` `x = 1;``    ``int` `y = n * n;` `    ``// No. of Groups``    ``for` `(``int` `i = 1; i <= n; i++)``    ``{` `        ``// n/2 pairs``        ``for` `(``int` `j = 1; j <= n / 2; j++)``        ``{``            ``Console.Write(``"{ "` `+ x + ``", "` `+ y + ``"} "``);``            ``x++;``            ``y--;``        ``}` `        ``Console.WriteLine();``    ``}``}` `// Driver code``public` `static` `void` `Main ()``{``    ``int` `n = 4;``    ``printGroups(n);``}``}` `// This code is contributed by shs`

## PHP

 ``

## Javascript

 ``

Output:

```{ 1, 16} { 2, 15}
{ 3, 14} { 4, 13}
{ 5, 12} { 6, 11}
{ 7, 10} { 8, 9}```

Time Complexity: O(n2)

Auxiliary Space: O(1)

My Personal Notes arrow_drop_up