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.
#include <bits/stdc++.h>
using namespace std;
long long A[100005], seg[4 * 100005];
void build(long long ind, long long low, long long high) {
  if (low == high) {
    if (A[low] % 5 == 0)
      seg[ind] = 1;
    else
      seg[ind] = 0;
    return;
  }
  long long mid = (low + high) / 2;
  build(ind * 2 + 1, low, mid);
  build(ind * 2 + 2, mid + 1, high);
  seg[ind] = (seg[ind * 2 + 1] + seg[ind * 2 + 2]);
}
long long query(long long ind, long long low, long long high, long long l,
                long long r) {
  if (l <= low && r >= high) return (seg[ind]);
  if (low > r || high < l) return (0);
  long long mid = (low + high) / 2;
  long long left = query(ind * 2 + 1, low, mid, l, r);
  long long right = query(ind * 2 + 2, mid + 1, high, l, r);
  return (left + right);
}
long long fxp(long long base, long long expo) {
  if (expo == 0) return 1;
  if (expo % 2 == 0) {
    long long c = fxp(base, expo / 2);
    return ((c * c) % 1000000007);
  } else
    return ((base * fxp(base, expo - 1)) % 1000000007);
}
bool isPrime(int n) {
  if (n <= 1) return false;
  if (n <= 3) return true;
  if (n % 2 == 0 || n % 3 == 0) return false;
  for (int i = 5; i * i <= n; i = i + 6)
    if (n % i == 0 || n % (i + 2) == 0) return false;
  return true;
}
void solve() {
  long long n;
  cin >> n;
  if (n == 1) {
    cout << "FastestFinger"
         << "\n";
    return;
  }
  if (n % 2 == 1 || n == 2) {
    cout << "Ashishgup"
         << "\n";
    return;
  }
  long long p = n;
  long long c = 0;
  while (p % 2 == 0) {
    p /= 2;
    c++;
  }
  if (p == 1) {
    cout << "FastestFinger"
         << "\n";
    return;
  }
  if (isPrime(p) && c == 1)
    cout << "FastestFinger"
         << "\n";
  else
    cout << "Ashishgup"
         << "\n";
}
int main() {
  int t = 1;
  cin >> t;
  while (t--) {
    solve();
  }
}
