# Codeforces Round #685 (Div. 2) D. Circle Game

Utkarsh is forced to play yet another one of Ashish’s games. The game progresses turn by turn and as usual, Ashish moves first.

Consider the 2D plane. There is a token which is initially at (0,0). In one move a player must increase either the x coordinate or the y coordinate of the token by exactly k. In doing so, the player must ensure that the token stays within a (Euclidean) distance d from (0,0).

In other words, if after a move the coordinates of the token are (p,q), then p2+q2≤d2 must hold.

The game ends when a player is unable to make a move. It can be shown that the game will end in a finite number of moves. If both players play optimally, determine who will win.

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

The only line of each test case contains two space separated integers d (1≤d≤105) and k (1≤k≤d).

Output
For each test case, if Ashish wins the game, print “Ashish”, otherwise print “Utkarsh” (without the quotes).

Example
inputCopy
5
2 1
5 2
10 3
25 4
15441 33
outputCopy
Utkarsh
Ashish
Utkarsh
Utkarsh
Ashish
Note
In the first test case, one possible sequence of moves can be

(0,0)−→−−−Ashish (0,1)−→−−−−Utkarsh (0,2).

Ashish has no moves left, so Utkarsh wins.

#include <bits/stdc++.h>

using namespace  std;
typedef long long ll;
ll d,k;
bool solve(){
ll a = sqrt((double)(d*d)/(2*k*k));

if((a*a+(a+1)*(a+1))*(k*k) <= d*d){
return true;
}else{
return false;
}
}
int main(void){
int T;
cin >> T;
while(T--){
cin >> d >> k;
if(solve()){
cout << "Ashish" << endl;
}else{
cout << "Utkarsh" << endl;
}
}

return 0;
}


02-06 1843
10-17 557
01-24 2373
09-20 219