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.io.*;
import java.util.*;
import java.math.*;

public final class Main {
    BufferedReader br;
    StringTokenizer stk;
    
    public static void main(String[] args) throws Exception {
        new Main().run();
    }
    
    {
        stk = null;
        br = new BufferedReader(new InputStreamReader(System.in));
    }
    
    boolean tests = true;
    
    long mod = 1000_000_000 + 7;
    StringBuilder res = new StringBuilder(1000005);
    
    void run() throws Exception {
        int t = tests ? ni() : 1;
        for(int i = 1; i <= t; i++) {
            go(i);
        }
        System.out.print(res.length() == 0 ? "" : res);
    }
    
    void go(int T) throws Exception {
        int n = ni();
        if(n == 1 || (n > 2 && Integer.bitCount(n) == 1)) {
            res.append("FastestFinger\n");
        } else if(n == 2 || n % 2 == 1) {
            res.append("Ashishgup\n");
        } else {
            for(int i = 2; i * i <= n; i++) {
                if(n % i == 0) {
                    int a = i;
                    int b = n / a;
                    if(ok(n, a) || ok(n, b) || ((n / 2) % 2 == 1) && !isPrime(n / 2)) {
                        res.append("Ashishgup\n");
                        return;
                    }
                }
            }
            res.append("FastestFinger\n");
        }
    }
    
    boolean ok(int n, int a) {
        if(a % 2 == 0) return false;
        if(Integer.bitCount(n / a) == 1 && n / a > 2) {
            return true;
        }
        return false;
    }
    
    boolean isPrime(int n) {
        for(int i = 2; i * i <= n; i++) {
            if(n % i == 0) return false;
        }
        return true;
    }
    
    class Node {
        HashSet<Integer> adj;
        public Node() {
            adj = new HashSet<>();
        }
    }
    
    //Reader & Writer
    String nt() throws Exception {
        if (stk == null || !stk.hasMoreTokens())
            stk = new StringTokenizer(br.readLine(), " ");
        return stk.nextToken();
    }

    char[] nc() throws Exception {
        return nt().toCharArray();
    }

    int ni() throws Exception {
        return Integer.parseInt(nt());
    }

    long nl() throws Exception {
        return Long.parseLong(nt());
    }
    
    double nd() throws Exception {
        return Double.parseDouble(nt());
    }
    
    //Some Misc methods
    int get(int l, int r, int[] a) {
        return l == 0 ? a[r] : a[r] - a[l - 1];
    }
    
    void shuffle(int[] a) {
        Random r = new Random();
        for(int i = 0; i < a.length; i++) {
            int idx = r.nextInt(a.length);
            int temp = a[i];
            a[i] = a[idx];
            a[idx] = temp;
        }
    }
    
    void reverse(long[] a) {
        for(int i = 0, j = a.length - 1; i < j; i++, j--) {
            long temp = a[i];
            a[i] = a[j];
            a[j] = temp;
        }
    }
    
    void print(int[] a) {
        System.out.println(Arrays.toString(a));
    }
    
    void print(long[] a) {
        System.out.println(Arrays.toString(a));
    }
}