C. Number Game
time limit per test2 seconds
memory limit per test256 megabytes
inputstandard input
outputstandard output
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≤109).
Output
For each test case, print “Ashishgup” if he wins, and “FastestFinger” otherwise (without quotes).
Example
inputCopy
7
1
2
3
4
5
6
12
outputCopy
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.
bool isprime(ll n){for(ll i=2;i*i<=n;i++)if(n%i==0)return 0;return 1;}
int main() {
int t=read();
while(t--) {
ll n;
cin >> n;
if(n==2)
cout<<"Ashishgup";
else if((n&(n-1))==0)
cout<<"FastestFinger";
else if(n%2==1)
cout<<"Ashishgup";
else {
ll p=0;
while(n%2==0) {
p++;
n/=2;
}
if(p==1 and isprime(n) )
cout<<"FastestFinger";
else
cout<<"Ashishgup";
}
}
return 0;
}