# HackerEarth Maximum bit shifts problem solution

In this HackerEarth 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;        InputReader in = new InputReader(inputStream);        PrintWriter out = new PrintWriter(outputStream);        Task solver = new Task();        solver.solve(1, in, out);        out.close();    }    static class Task {        PrintWriter out;        InputReader in;        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);        }    }    static class InputReader {        private InputStream stream;        private byte[] buf = new byte[1024];        private int curChar;        private int numChars;        public InputReader(InputStream stream) {            this.stream = stream;        }        public int read() {            if (numChars == -1) {                throw new UnknownError();            }            if (curChar >= numChars) {                curChar = 0;                try {                    numChars = stream.read(buf);                } 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() {            int c = read();            while (isSpaceChar(c)) {                c = read();            }            StringBuffer res = new StringBuffer();            do {                res.appendCodePoint(c);                c = read();            } while (!isSpaceChar(c));            return res.toString();        }        private boolean isSpaceChar(int c) {            return c == ' ' || c == '\n' || c == '\r' || c == '\t' || c == -1;        }    }}`