In this Leetcode Maximum bit shifts, problem-solution you are given a sequence of N numbers. You can perform the following operation:

Select a number from the sequence and swap any pair of bits in its binary representation (Binary representation does not have any leading zeroes).

Output the lexicographic maximum sequence possible after performing 0 or more of the above operations.

## HackerEarth Maximum bit shifts problem solution.

```import java.io.OutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.io.IOException;
import java.io.InputStream;

public class Main {
public static void main(String[] args) {
InputStream inputStream = System.in;
OutputStream outputStream = System.out;
PrintWriter out = new PrintWriter(outputStream);
solver.solve(1, in, out);
out.close();
}

PrintWriter out;

public void solve(int testNumber, InputReader in, PrintWriter out) {
this.out = out;
this.in = in;
int n = ni();
long[] arr = new long[n];
long[] ans = new long[n];
int i = 0;
for (i = 0; i < n; i++) {
arr[i] = nl();
String st = Long.toBinaryString(arr[i]);
int c = 0;
for (int j = 0; j < st.length(); j++)
c += st.charAt(j) - '0';
String mx = "";
for (int j = 0; j < c; j++)
mx += '1';
for (int j = 0; j < st.length() - c; j++)
mx += '0';
ans[i] = Long.parseLong(mx, 2);
}
for (i = 0; i < n; i++)
p(ans[i] + " ");
pn("");
}

int ni() {
return in.nextInt();
}

long nl() {
return in.nextLong();
}

void pn(String zx) {
out.println(zx);
}

void p(Object o) {
out.print(o);
}

}

private InputStream stream;
private byte[] buf = new byte;
private int curChar;
private int numChars;

this.stream = stream;
}

if (numChars == -1) {
throw new UnknownError();
}
if (curChar >= numChars) {
curChar = 0;
try {
} catch (IOException e) {
throw new UnknownError();
}
if (numChars <= 0) {
return -1;
}
}
return buf[curChar++];
}

public int nextInt() {
return Integer.parseInt(next());
}

public long nextLong() {
return Long.parseLong(next());
}

public String next() {
while (isSpaceChar(c)) {
}
StringBuffer res = new StringBuffer();
do {
res.appendCodePoint(c);