You are given an integer x. Can you make x by summing up some number of 11, 111, 1111, 11111, …? (You can use any number among them any number of times).

For instance, 

  * 33=11+11+11 
  * 144=111+11+11+11 

Input

The first line of input contains a single integer t (1 ≤ t ≤ 10000) — the number of testcases.

The first and only line of each testcase contains a single integer x (1 ≤ x ≤ 10^9) — the number you have to make.

Output

For each testcase, you should output a single string. If you can make x, output "YES" (without quotes). Otherwise, output "NO".

You can print each letter of "YES" and "NO" in any case (upper or lower).

Example

Input


3
33
144
69


Output


YES
YES
NO

Note

Ways to make 33 and 144 were presented in the statement. It can be proved that we can't present 69 this way.
    import java.io.DataInputStream;
    import java.io.IOException;
    import java.io.OutputStreamWriter;
    import java.io.PrintWriter;
     
    public class B {
     
        private static void run() throws IOException {
            int x = in.nextInt();
            for (int i = 0; i < 11; i++) {
                if (i * 111 > x) break;
                if ((x - 111 * i) % 11 == 0) {
                    out.println("YES");
                    return;
                }
            }
            out.println("NO");
        }
     
        public static void main(String[] args) throws IOException {
            in = new Reader();
            out = new PrintWriter(new OutputStreamWriter(System.out));
     
            int t = in.nextInt();
            for (int i = 0; i < t; i++) {
                run();
            }
     
            out.flush();
            in.close();
            out.close();
        }
     
        private static int gcd(int a, int b) {
            if (a == 0 || b == 0)
                return 0;
            while (b != 0) {
                int tmp;
                tmp = a % b;
                a = b;
                b = tmp;
            }
            return a;
        }
     
        static final long mod = 1000000007;
     
        static long pow_mod(long a, long b) {
            long result = 1;
            while (b != 0) {
                if ((b & 1) != 0) result = (result * a) % mod;
                a = (a * a) % mod;
                b >>= 1;
            }
            return result;
        }
     
        private static long multiplied_mod(long... longs) {
            long ans = 1;
            for (long now : longs) {
                ans = (ans * now) % mod;
            }
            return ans;
        }
     
        @SuppressWarnings("FieldCanBeLocal")
        private static Reader in;
        private static PrintWriter out;
     
        private static int[] read_int_array(int len) throws IOException {
            int[] a = new int[len];
            for (int i = 0; i < len; i++) {
                a[i] = in.nextInt();
            }
            return a;
        }
     
        private static long[] read_long_array(int len) throws IOException {
            long[] a = new long[len];
            for (int i = 0; i < len; i++) {
                a[i] = in.nextLong();
            }
            return a;
        }
     
        private static void print_array(int[] array) {
            for (int now : array) {
                out.print(now);
                out.print(' ');
            }
            out.println();
        }
     
        private static void print_array(long[] array) {
            for (long now : array) {
                out.print(now);
                out.print(' ');
            }
            out.println();
        }
     
        static class Reader {
            private static final int BUFFER_SIZE = 1 << 16;
            private final DataInputStream din;
            private final byte[] buffer;
            private int bufferPointer, bytesRead;
     
            Reader() {
                din = new DataInputStream(System.in);
                buffer = new byte[BUFFER_SIZE];
                bufferPointer = bytesRead = 0;
            }
     
            public String readLine() throws IOException {
                final byte[] buf = new byte[1024]; // line length
                int cnt = 0, c;
                while ((c = read()) != -1) {
                    if (c == '\n') {
                        break;
                    }
                    buf[cnt++] = (byte) c;
                }
                return new String(buf, 0, cnt);
            }
     
            public int nextSign() throws IOException {
                byte c = read();
                while ('+' != c && '-' != c) {
                    c = read();
                }
                return '+' == c ? 0 : 1;
            }
     
            private static boolean isSpaceChar(int c) {
                return !(c >= 33 && c <= 126);
            }
     
            public int skip() throws IOException {
                int b;
                // noinspection ALL
                while ((b = read()) != -1 && isSpaceChar(b)) {
                    ;
                }
                return b;
            }
     
            public char nc() throws IOException {
                return (char) skip();
            }
     
            public String next() throws IOException {
                int b = skip();
                final StringBuilder sb = new StringBuilder();
                while (!isSpaceChar(b)) { // when nextLine, (isSpaceChar(b) && b != ' ')
                    sb.appendCodePoint(b);
                    b = read();
                }
                return sb.toString();
            }
     
            public int nextInt() throws IOException {
                int ret = 0;
                byte c = read();
                while (c <= ' ') {
                    c = read();
                }
                final boolean neg = c == '-';
                if (neg) {
                    c = read();
                }
                do {
                    ret = ret * 10 + c - '0';
                } while ((c = read()) >= '0' && c <= '9');
     
                if (neg) {
                    return -ret;
                }
                return ret;
            }
     
            public long nextLong() throws IOException {
                long ret = 0;
                byte c = read();
                while (c <= ' ') {
                    c = read();
                }
                final boolean neg = c == '-';
                if (neg) {
                    c = read();
                }
                do {
                    ret = ret * 10 + c - '0';
                }
                while ((c = read()) >= '0' && c <= '9');
                if (neg) {
                    return -ret;
                }
                return ret;
            }
     
            public double nextDouble() throws IOException {
                double ret = 0, div = 1;
                byte c = read();
                while (c <= ' ') {
                    c = read();
                }
                final boolean neg = c == '-';
                if (neg) {
                    c = read();
                }
     
                do {
                    ret = ret * 10 + c - '0';
                }
                while ((c = read()) >= '0' && c <= '9');
     
                if (c == '.') {
                    while ((c = read()) >= '0' && c <= '9') {
                        ret += (c - '0') / (div *= 10);
                    }
                }
     
                if (neg) {
                    return -ret;
                }
                return ret;
            }
     
            private void fillBuffer() throws IOException {
                bytesRead = din.read(buffer, bufferPointer = 0, BUFFER_SIZE);
                if (bytesRead == -1) {
                    buffer[0] = -1;
                }
            }
     
            private byte read() throws IOException {
                if (bufferPointer == bytesRead) {
                    fillBuffer();
                }
                return buffer[bufferPointer++];
            }
     
            public void close() throws IOException {
                din.close();
            }
     
        }
    }