# Print N distinct numbers following the given operations

Given an **integer N** which is always an even number, our task is to print **N** distinct numbers following the given conditions:

- The first half numbers are even whereas the other half numbers are odd
- Sum of the elements of first half numbers and sum of elements of second half numbers should be equal

Print the array if the above conditions satisfy otherwise output “-1”.**Examples:**

Input:N = 4Output:2 4 1 5Explanation:

Given number 4 we are required to print 4 numbers. First Half = 2, 4 and their sum is 6, other half = 1, 5 and their sum is also 6.Input:N = 22Output:-1Explanation:

It is not possible to print the required array.

**Approach:**

To solve the problem mentioned above we have to observe that the **integer N has to be a multiple of 4**.

- We know that the
**sum of the first N/2 even numbers will be even**, so if the sum of the other N/2 integers is also even then N/2 must be even, because the**sum of an odd number of odd integers is always odd.** - If N/2 is even then N is a multiple of 4, so if n is not divisible by 4 then the answer is “-1”, otherwise, there will be a possible array.
- For printing the array we will consider two parts such that the first half that is N/2 elements will be simply multiples of 2 and the other half will be multiple of 2 – 1. For the last element in the array, we will calculate the integer by applying the direct formula N + N / 2 – 1 because we are supposed to make the sum for two halves equal.

Below is the implementation of the above approach:

## C++

`// C++ implementation to Print N distinct numbers` `#include <bits/stdc++.h>` `using` `namespace` `std;` `// Function to print the required array` `bool` `printArr(` `int` `n)` `{` ` ` `// Check if number is a multiple of 4` ` ` `if` `(n % 4 == 0) {` ` ` `// Printing Left Half of the array` ` ` `for` `(` `int` `i = 1; i <= n / 2; i++)` ` ` `cout << i * 2 << ` `' '` `;` ` ` `// Printing Right Half of the array` ` ` `for` `(` `int` `i = 1; i < n / 2; i++)` ` ` `cout << i * 2 - 1 << ` `' '` `;` ` ` `cout << n + n / 2 - 1 << ` `'\n'` `;` ` ` `}` ` ` `else` ` ` `cout << ` `"-1"` `;` `}` `// Driver code` `int` `main()` `{` ` ` `int` `n = 22;` ` ` `printArr(n);` ` ` `return` `0;` `}` |

## Java

`// Java implementation to print N distinct numbers` `import` `java.util.*;` `class` `GFG{` `// Function to print the required array` `static` `void` `printArr(` `int` `n)` `{` ` ` `// Check if number is a multiple of 4` ` ` `if` `(n % ` `4` `== ` `0` `)` ` ` `{` ` ` `// Printing left half of the array` ` ` `for` `(` `int` `i = ` `1` `; i <= n / ` `2` `; i++)` ` ` `System.out.print(i * ` `2` `+ ` `" "` `);` ` ` `// Printing Right Half of the array` ` ` `for` `(` `int` `i = ` `1` `; i < n / ` `2` `; i++)` ` ` `System.out.print(i * ` `2` `- ` `1` `+ ` `" "` `);` ` ` `System.out.println(n + n / ` `2` `- ` `1` `);` ` ` `}` ` ` `else` ` ` `System.out.print(` `"-1"` `);` `}` `// Driver code` `public` `static` `void` `main(String[] args)` `{` ` ` `int` `n = ` `22` `;` ` ` `printArr(n);` `}` `}` `// This code is contributed by amal kumar choubey` |

## Python3

`# Python3 implementation to print` `# N distinct numbers` `# Function to print the required array` `def` `printArr(n):` ` ` `# Check if number is a multiple of 4` ` ` `if` `(n ` `%` `4` `=` `=` `0` `):` ` ` ` ` `# Printing Left Half of the array` ` ` `for` `i ` `in` `range` `(` `1` `, (n ` `/` `2` `) ` `+` `1` `):` ` ` `print` `(i ` `*` `2` `, end ` `=` `" "` `)` ` ` `# Printing Right Half of the array` ` ` `for` `i ` `in` `range` `(` `1` `, n ` `/` `2` `):` ` ` `print` `(i ` `*` `2` `-` `1` `, end ` `=` `" "` `)` ` ` ` ` `print` `(n ` `+` `n ` `/` `2` `-` `1` `, end ` `=` `"\n"` `)` ` ` `else` `:` ` ` `print` `(` `"-1"` `)` `# Driver code` `n ` `=` `22` `printArr(n)` `# This code is contributed by PratikBasu` |

## C#

`// C# implementation to print N distinct numbers` `using` `System;` `public` `class` `GFG{` `// Function to print the required array` `static` `void` `printArr(` `int` `n)` `{` ` ` `// Check if number is a multiple of 4` ` ` `if` `(n % 4 == 0)` ` ` `{` ` ` ` ` `// Printing left half of the array` ` ` `for` `(` `int` `i = 1; i <= n / 2; i++)` ` ` `Console.Write(i * 2 + ` `" "` `);` ` ` `// Printing Right Half of the array` ` ` `for` `(` `int` `i = 1; i < n / 2; i++)` ` ` `Console.Write(i * 2 - 1 + ` `" "` `);` ` ` `Console.WriteLine(n + n / 2 - 1);` ` ` `}` ` ` ` ` `else` ` ` `Console.Write(` `"-1"` `);` `}` `// Driver code` `public` `static` `void` `Main(String[] args)` `{` ` ` `int` `n = 22;` ` ` `printArr(n);` `}` `}` `// This code is contributed by 29AjayKumar` |

## Javascript

`<script>` `// Javascript implementation to Print N distinct numbers` `// Function to print the required array` `function` `printArr(n)` `{` ` ` `// Check if number is a multiple of 4` ` ` `if` `(n % 4 == 0) {` ` ` `// Printing Left Half of the array` ` ` `for` `(` `var` `i = 1; i <= n / 2; i++)` ` ` `document.write( i * 2 + ` `' '` `);` ` ` `// Printing Right Half of the array` ` ` `for` `(` `var` `i = 1; i < n / 2; i++)` ` ` `document.write( i * 2 - 1 + ` `' '` `);` ` ` `document.write( n + n / 2 - 1 + ` `'<br>'` `);` ` ` `}` ` ` `else` ` ` `document.write( ` `"-1"` `);` `}` `// Driver code` `var` `n = 22;` `printArr(n);` `</script>` |

**Output:**

-1

**Time Complexity:** O(N)

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the **DSA Self Paced Course** at a student-friendly price and become industry ready. To complete your preparation from learning a language to DS Algo and many more, please refer **Complete Interview Preparation Course****.**

In case you wish to attend **live classes **with experts, please refer **DSA Live Classes for Working Professionals **and **Competitive Programming Live for Students**.