Ashishgup and FastestFinger play a game. 

They start with a number n and play in turns. In each turn, a player can make any one of the following moves:

  * Divide n by any of its odd divisors greater than 1. 
  * Subtract 1 from n if n is greater than 1. 



Divisors of a number include the number itself.

The player who is unable to make a move loses the game.

Ashishgup moves first. Determine the winner of the game if both of them play optimally.

Input

The first line contains a single integer t (1 ≤ t ≤ 100) — the number of test cases. The description of the test cases follows.

The only line of each test case contains a single integer — n (1 ≤ n ≤ 10^9).

Output

For each test case, print "Ashishgup" if he wins, and "FastestFinger" otherwise (without quotes).

Example

Input


7
1
2
3
4
5
6
12


Output


FastestFinger
Ashishgup
Ashishgup
FastestFinger
Ashishgup
FastestFinger
Ashishgup

Note

In the first test case, n = 1, Ashishgup cannot make a move. He loses.

In the second test case, n = 2, Ashishgup subtracts 1 on the first move. Now n = 1, FastestFinger cannot make a move, so he loses.

In the third test case, n = 3, Ashishgup divides by 3 on the first move. Now n = 1, FastestFinger cannot make a move, so he loses.

In the last test case, n = 12, Ashishgup divides it by 3. Now n = 4, FastestFinger is forced to subtract 1, and Ashishgup gets 3, so he wins by dividing it by 3.
import java.util.*;
import java.io.*;
import static java.lang.Math.*;
public class A
{
	static InputReader in=new InputReader(System.in);
	static OutputWriter out=new OutputWriter(System.out);    
	static StringBuilder sb=new StringBuilder();
	static long MOD = (long)(998244353);    
	// Main Class Starts Here            

	public static void main(String args[])throws IOException
	{
		// Write your code.
		/*
		FastestFinger
		Ashishgup
		*/
		int t=in();    
		while(t-->0) {
			int n=in();
			if(n == 1) {
				app("FastestFinger"+"\n");
				continue;
			}
			if(n == 2) {
				app("Ashishgup"+"\n");
				continue;
			}
			if(n % 2 == 1) {
				app("Ashishgup"+"\n");
				continue;
			}
			int cc = Integer.bitCount(n);
			if(cc == 1) {
				// power of 2 , ff.
				app("FastestFinger"+"\n");
				continue;
			}
			if(n % 4 == 0) {
				app("Ashishgup"+"\n");
				continue;
			}
			int h = n / 2;
			if(isPrime(h)) {
				app("FastestFinger\n");
			}
			else {
				app("Ashishgup\n");
			}
		}    	
		out.printLine(sb);
		out.close();

	}	
	
	public static boolean isPrime(int x) {
		for(int i=3; (i*i) <= x; i++) {
			if(x % i == 0) return false;
		}
		return true;
	}
	
	
	static class Bipair{
		int val;
		int bit;
		public Bipair(int val,int bit) {
			this.val = val;
			this.bit = bit;
		}
	}
	
	static class CircLL{
		// circular linked list.
		Node head;
		Node last;
		public CircLL(long num) {
			head = new Node(num); 
			// pointing to itself.
			last = head;
			last.next = head;
		}    	

		public void add(long num) {
			Node fresh = new Node(num);
			last.next = fresh;
			last = last.next;
			last.next  = head;
		}

		public void print() {
			Node temp = head;    		
			while(temp.next!=head) {    			
				temp = temp.next;
			}    		
			prln("\n");
		}
	}

	static class Node{
		long data;
		Node next;    	
		public Node(long data) {
			this.data=data;
			this.next=null;
		}
	}

	public static int lis(int a[]) {
		int n=a.length;    	
		if(n==0 || n==1)
			return n;
		int dp[] = new int[n];
		for(int i=0;i<n;i++) {
			dp[i] = 1;
			for(int j=0;j<i;j++) {
				if(a[j] < a[i]) {
					dp[i] = Math.max(dp[i], (dp[j]+1));
				}
			}
		}
		Arrays.sort(dp);
		return dp[n-1];
	}

	public static long rev(long n) {
		if(n<10L)
			return n;
		long rev = 0L;
		while(n != 0L) {
			long a = n % 10L;
			rev = a + rev*10L;
			n /= 10L;
		}
		return rev;
	}

	public static long pow(long a,long b) {
		if(b==0)
			return 1L;
		if(b==1)
			return a % MOD;
		long f = a * a;
		if(f > MOD)
			f %= MOD;
		long val = pow(f, b/2) % MOD;
		if(b % 2 == 0)
			return val;
		else {
			long temp = val * (a % MOD);
			if(temp > MOD)
				temp = temp % MOD;
			return temp;
		}
	}

	public static long lcm(long a,long b) {
		long lcm = (a*b)/gcd(a,b);
		return lcm;
	}

	public static long gcd(long a,long b) {
		if(b==0)
			return a;
		return gcd(b, a%b);
	}

	public static int[] an(int n) {
		int ar[]=new int[n];
		for(int i=0;i<n;i++)
			ar[i]=in();
		return ar;
	}

	public static long[] lan(int n) {
		long ar[]=new long[n];
		for(int i=0;i<n;i++)
			ar[i]=lin();
		return ar;
	}    

	public static String atos(Object ar[]) {
		return Arrays.toString(ar);
	}

	public static int in() {
		return in.readInt();
	}

	public static long lin() {
		return in.readLong();
	}    

	public static String sn() {
		return in.readString();
	}

	public static void prln(Object o) {    	
		out.printLine(o);
	}

	public static void prn(Object o) {    	
		out.print(o);
	}

	public static int getMax(int a[]) {
		int n = a.length;
		int max = a[0];
		for(int i=1; i < n; i++) {
			max = Math.max(max, a[i]);
		}
		return max;
	}

	public static int getMin(int a[]) {
		int n = a.length;
		int min = a[0];
		for(int i=1; i < n; i++) {
			min = Math.min(min, a[i]);
		}
		return min;
	}

	public static void display(int a[]) {
		out.printLine(Arrays.toString(a));
	}    

	public static HashMap<Integer,Integer> hm(int a[]){
		HashMap<Integer,Integer> map=new HashMap<>();
		for(int i=0; i < a.length;i++) {
			int keep = (int)map.getOrDefault(a[i],0);
			map.put(a[i],++keep);
		}
		return map;
	}

	public static void app(Object o) {
		sb.append(o);
	}

	public static long calcManhattanDist(int x1,int y1,int x2,int y2) {
		long xa = Math.abs(x1-x2);
		long ya = Math.abs(y1-y2);
		return (xa+ya);
	}


	static class InputReader {
		private InputStream stream;
		private byte[] buf = new byte[1024];
		private int curChar;
		private int numChars;
		private 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 String readString() {
			int c = read();
			while (isSpaceChar(c))
				c = read();
			StringBuilder res = new StringBuilder();
			do {
				res.appendCodePoint(c);
				c = read();
			} while (!isSpaceChar(c));
			return res.toString();
		}

		public boolean isSpaceChar(int c) {
			if (filter != null)
				return filter.isSpaceChar(c);
			return c == ' ' || c == '\n' || c == '\r' || c == '\t' || c == -1;
		}

		public String next() {
			return readString();
		}

		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 printLine(Object...objects) {
			print(objects);
			writer.println();
		}

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