Given an array **arr[]** containing natural numbers from **1** to **N**, the task is to find the maximum number of elements that can be made equal after the below operations:

- Remove any pair of elements from the array and insert their sum to an array.
- Repeat the above operation any numbers of times to maximize the count of equal elements.

**Examples:**

Input:arr[] = {1, 2, 3, 4}Output:2Explanation:

We can perform following operations:

{1, 2, 3, 4} -> {3, 3, 4} -> 2 elements are equal

Input:arr[] = {1 2 3 4 5 6}Output:3Explanation:

{1, 2, 3, 4, 5, 6} -> {7, 2, 3, 4, 5} -> {7, 7, 3, 4} -> {7, 7, 37} -> 3 elements are equal

**Approach: **The key observation in the problem is that:

**If N is even**, we can make a maximum count of equal elements by

**If N is odd**, we can make the maximum count of equal elements by

Therefore, the answer will always be

Below is the implementation of the above approach:

## C++

`// C++ implementation of` `// the above approach` `#include <bits/stdc++.h>` `using` `namespace` `std;` `// Function to count maximum number` `// of array elements equal` `int` `countEqual(` `int` `n)` `{` ` ` `return` `(n + 1) / 2;` `}` `// Driver Code` `int` `main()` `{` ` ` `int` `arr[] = { 1, 2, 3, 4, 5, 6 };` ` ` `int` `n = ` `sizeof` `(arr) / ` `sizeof` `(arr[0]);` ` ` `// Function Call` ` ` `cout << countEqual(n);` ` ` `return` `0;` `}` |

## Java

`// Java implementation of` `// the above approach` `import` `java.io.*;` `class` `GFG{` `// Function to count maximum number` `// of array elements equal` `static` `int` `countEqual(` `int` `n)` `{` ` ` `return` `(n + ` `1` `) / ` `2` `;` `}` `// Driver Code` `public` `static` `void` `main (String[] args)` `{` ` ` `int` `arr[] = { ` `1` `, ` `2` `, ` `3` `, ` `4` `, ` `5` `, ` `6` `};` ` ` `int` `n = arr.length;` ` ` `// Function call` ` ` `System.out.println(countEqual(n));` `}` `}` `// This code is contributed by AnkitRai01` |

## Python3

`# Python3 implementation of` `# the above approach` `# Function to count maximum number` `# of array elements equal` `def` `countEqual(n):` ` ` `return` `(n ` `+` `1` `) ` `/` `/` `2` `# Driver Code` `lst ` `=` `[ ` `1` `, ` `2` `, ` `3` `, ` `4` `, ` `5` `, ` `6` `]` `n ` `=` `len` `(lst)` `# Function call` `print` `(countEqual(n))` `# This code is contributed by vishu2908` |

## C#

`// C# implementation of` `// the above approach` `using` `System;` `class` `GFG{` `// Function to count maximum number` `// of array elements equal` `static` `int` `countEqual(` `int` `n)` `{` ` ` `return` `(n + 1) / 2;` `}` `// Driver Code` `public` `static` `void` `Main(String[] args)` `{` ` ` `int` `[]arr = {1, 2, 3, 4, 5, 6};` ` ` `int` `n = arr.Length;` ` ` `// Function call` ` ` `Console.WriteLine(countEqual(n));` `}` `}` `// This code is contributed by Rajput-Ji` |

**Output:**

3

**Performance Analysis:**

**Time Complexity:**O(1)**Auxiliary Space:**O(1)

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.