Problem: You are given an angle ang. 

The Jury asks You to find such regular n-gon (regular polygon with n vertices) that it has three vertices a, b and c (they can be non-consecutive) with \angle{abc} = ang or report that there is no such n-gon.

<image>

If there are several answers, print the minimal one. It is guarantied that if answer exists then it doesn't exceed 998244353.

Input

The first line contains single integer T (1 ≤ T ≤ 180) — the number of queries. 

Each of the next T lines contains one integer ang (1 ≤ ang < 180) — the angle measured in degrees. 

Output

For each query print single integer n (3 ≤ n ≤ 998244353) — minimal possible number of vertices in the regular n-gon or -1 if there is no such n.

Example

Input


4
54
50
2
178


Output


10
18
90
180

Note

The answer for the first query is on the picture above.

The answer for the second query is reached on a regular 18-gon. For example, \angle{v_2 v_1 v_6} = 50^{\circ}.

The example angle for the third query is \angle{v_{11} v_{10} v_{12}} = 2^{\circ}.

In the fourth query, minimal possible n is 180 (not 90).

Solution (in JAVA):

Solution:
import java.util.*;
import java.io.*;
public class codeforces{
    static class InputReader {
        public BufferedReader reader;
        public StringTokenizer tokenizer;
        public InputReader() {
            reader = new BufferedReader(new InputStreamReader(System.in));
            tokenizer = null;
        }
 
        public String next() {
            while (tokenizer == null || !tokenizer.hasMoreTokens()) {
                try {
                    tokenizer = new StringTokenizer(reader.readLine());
                } catch (IOException e) {
                    throw new RuntimeException(e);
                }
            }
            return tokenizer.nextToken();
        }
 
        public int nextInt() {
            return Integer.parseInt(next());
        }
 
        public long nextLong() {
            return Long.parseLong(next());
        }
 
        public double nextDouble() {
            return Double.parseDouble(next());
        }
 
        public String nextLine() {
            String s = null;
            try {
                s = reader.readLine();
            } catch (IOException e) {
                throw new RuntimeException(e);
            }
            return s;
        }
 
        public String nextParagraph() {
            String line = null;
            String ans = "";
            try {
                while ((line = reader.readLine()) != null) {
                    ans += line;
                }
            } catch (IOException e) {
                throw new RuntimeException(e);
            }
            return ans;
        }
    }
    //static int mod = 1000000007;
    static void printArray(int ar[]){ for(int x:ar) System.out.print(x+" ");}
    static void printArray(ArrayList<Integer> ar){ for(int x:ar) System.out.print(x+" ");}
    static int gcd(int a, int b){ if (a == 0) return b; return gcd(b%a, a);}
    static class Data{
        int pos;
        String val;
        public Data(int p,String s){
            this.pos = p;
            this.val = s;
        }
    }
    static int mod = 998244353;
    static long fact(int l){
        long f = 1;
        f = l;
        f = (f*(f+1))/2;
        return f%mod;
    }
    public static void main(String args[]){
        InputReader sc = new InputReader();
        PrintWriter pw = new PrintWriter(System.out);
        int t=sc.nextInt();
        for(int z=0;z<t;z++){
            int ang = sc.nextInt();
            int l = ang;
            ang = (ang > 90)?180-ang:ang;
            int p  = 2*ang, c = 360;
            int g = gcd(p, c);
            while(g!=1){
                p/=g;
                c/=g;
                g = gcd(p, c);
            }
            if(p == 1 && l > 90){
                c = c*2;
            }
            if(c<3){
                c = c*2;
            }
            pw.println(c);
        }
        pw.close();
    }
}