Problem: Boy Dima gave Julian a birthday present — set B consisting of positive integers. However, he didn't know, that Julian hates sets, but enjoys bipartite graphs more than anything else!

Julian was almost upset, but her friend Alex said, that he can build an undirected graph using this set in such a way: let all integer numbers be vertices, then connect any two i and j with an edge if |i - j| belongs to B.

Unfortunately, Julian doesn't like the graph, that was built using B. Alex decided to rectify the situation, so he wants to erase some numbers from B, so that graph built using the new set is bipartite. The difficulty of this task is that the graph, Alex has to work with, has an infinite number of vertices and edges! It is impossible to solve this task alone, so Alex asks you for help. Write a program that erases a subset of minimum size from B so that graph constructed on the new set is bipartite.

Recall, that graph is bipartite if all its vertices can be divided into two disjoint sets such that every edge connects a vertex from different sets.

Input

First line contains an integer n ~ (1 ⩽ n ⩽ 200 000) — size of B

Second line contains n integers b_1, b_2, …, b_n ~ (1 ⩽ b_i ⩽ 10^{18}) — numbers of B, all b_i are unique

Output

In the first line print single integer k – the number of erased elements. In the second line print k integers — values of erased elements.

If there are multiple answers, print any of them.

Examples

Input


3
1 2 3


Output


1
2 

Input


2
2 6


Output


0

Solution (in JAVA):

Solution:
import java.io.OutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.util.Arrays;
import java.util.Iterator;
import java.io.BufferedWriter;
import java.util.InputMismatchException;
import java.io.IOException;
import java.io.Writer;
import java.io.OutputStreamWriter;
import java.io.InputStream;

/**
 * Built using CHelper plug-in
 * Actual solution is at the top
 *
 * @author Mufaddal Naya
 */
public class Main {
    public static void main(String[] args) {
        InputStream inputStream = System.in;
        OutputStream outputStream = System.out;
        InputReader in = new InputReader(inputStream);
        OutputWriter out = new OutputWriter(outputStream);
        DAlexAndJulian solver = new DAlexAndJulian();
        solver.solve(1, in, out);
        out.close();
    }

    static class DAlexAndJulian {
        public void solve(int testNumber, InputReader c, OutputWriter w) {
            int n = c.readInt();
            LongArray[] e = new LongArray[64];
            for (int i = 0; i < 64; i++) {
                e[i] = new LongArray();
            }
            for (int i = 0; i < n; i++) {
                long x = c.readLong(), tem = x;
                int pow = 0;
                while ((tem & 1) == 0) {
                    pow++;
                    tem >>= 1;
                }
                e[pow].add(x);
            }
            int mx = 0, mxind = 0;
            for (int i = 0; i < 64; i++) {
                if (e[i].size() > mx) {
                    mx = e[i].size();
                    mxind = i;
                }
            }
            w.printLine(n - mx);
            for (int i = 0; i < 64; i++) {
                if (i != mxind) {
                    for (long ii : e[i]) {
                        w.print(ii + " ");
                    }
                }
            }

        }

    }

    static class InputReader {
        private InputStream stream;
        private byte[] buf = new byte[1024];
        private int curChar;
        private int numChars;
        private InputReader.SpaceCharFilter filter;

        public InputReader(InputStream stream) {
            this.stream = stream;
        }

        public int read() {
            if (numChars == -1) {
                throw new InputMismatchException();
            }
            if (curChar >= numChars) {
                curChar = 0;
                try {
                    numChars = stream.read(buf);
                } catch (IOException e) {
                    throw new InputMismatchException();
                }
                if (numChars <= 0) {
                    return -1;
                }
            }
            return buf[curChar++];
        }

        public int readInt() {
            int c = read();
            while (isSpaceChar(c)) {
                c = read();
            }
            int sgn = 1;
            if (c == '-') {
                sgn = -1;
                c = read();
            }
            int res = 0;
            do {
                if (c < '0' || c > '9') {
                    throw new InputMismatchException();
                }
                res *= 10;
                res += c - '0';
                c = read();
            } while (!isSpaceChar(c));
            return res * sgn;
        }

        public long readLong() {
            int c = read();
            while (isSpaceChar(c)) {
                c = read();
            }
            int sgn = 1;
            if (c == '-') {
                sgn = -1;
                c = read();
            }
            long res = 0;
            do {
                if (c < '0' || c > '9') {
                    throw new InputMismatchException();
                }
                res *= 10;
                res += c - '0';
                c = read();
            } while (!isSpaceChar(c));
            return res * sgn;
        }

        public boolean isSpaceChar(int c) {
            if (filter != null) {
                return filter.isSpaceChar(c);
            }
            return isWhitespace(c);
        }

        public static boolean isWhitespace(int c) {
            return c == ' ' || c == '\n' || c == '\r' || c == '\t' || c == -1;
        }

        public interface SpaceCharFilter {
            public boolean isSpaceChar(int ch);

        }

    }

    static class OutputWriter {
        private final PrintWriter writer;

        public OutputWriter(OutputStream outputStream) {
            writer = new PrintWriter(new BufferedWriter(new OutputStreamWriter(outputStream)));
        }

        public OutputWriter(Writer writer) {
            this.writer = new PrintWriter(writer);
        }

        public void print(Object... objects) {
            for (int i = 0; i < objects.length; i++) {
                if (i != 0) {
                    writer.print(' ');
                }
                writer.print(objects[i]);
            }
        }

        public void close() {
            writer.close();
        }

        public void printLine(int i) {
            writer.println(i);
        }

    }

    static class LongArray implements Iterable<Long> {
        private static final int DEFAULT_CAP = 1 << 3;
        public long[] arr;
        public int len = 0;
        private int capacity = 0;

        public LongArray() {
            this(DEFAULT_CAP);
        }

        public LongArray(int capacity) {
            if (capacity < 0) {
                throw new IllegalArgumentException("Illegal Capacity: " + capacity);
            }
            this.capacity = capacity;
            arr = new long[capacity];
        }

        public LongArray(long[] array) {
            if (array == null) {
                throw new IllegalArgumentException("Array cannot be null");
            }
            arr = Arrays.copyOf(array, array.length);
            capacity = len = array.length;
        }

        public int size() {
            return len;
        }

        public void add(long elem) {
            if (len + 1 >= capacity) {
                if (capacity == 0) {
                    capacity = 1;
                } else {
                    capacity *= 2; // double the size
                }
                arr = Arrays.copyOf(arr, capacity); // pads with extra 0/null elements
            }
            arr[len++] = elem;
        }

        public Iterator<Long> iterator() {
            return new Iterator<Long>() {
                int index = 0;

                public boolean hasNext() {
                    return index < len;
                }

                public Long next() {
                    return arr[index++];
                }

                public void remove() {
                    throw new UnsupportedOperationException();
                }
            };
        }

        public String toString() {
            if (len == 0) {
                return "[]";
            } else {
                StringBuilder sb = new StringBuilder(len).append("[");
                for (int i = 0; i < len - 1; i++) {
                    sb.append(arr[i] + ", ");
                }
                return sb.append(arr[len - 1] + "]").toString();
            }
        }

    }
}