Adilbek was assigned to a special project. For Adilbek it means that he has n days to run a special program and provide its results. But there is a problem: the program needs to run for d days to calculate the results.
Fortunately, Adilbek can optimize the program. If he spends x (x is a non-negative integer) days optimizing the program, he will make the program run in ⌈dx+1⌉ days (⌈a⌉ is the ceiling function: ⌈2.4⌉=3, ⌈2⌉=2). The program cannot be run and optimized simultaneously, so the total number of days he will spend is equal to x+⌈dx+1⌉.
Will Adilbek be able to provide the generated results in no more than n days?
Input
The first line contains a single integer T (1≤T≤50) — the number of test cases.
The next T lines contain test cases – one per line. Each line contains two integers n and d (1≤n≤109, 1≤d≤109) — the number of days before the deadline and the number of days the program runs.
Output
Print T answers — one per test case. For each test case print YES (case insensitive) if Adilbek can fit in n days or NO (case insensitive) otherwise.
Example
inputCopy
3
1 1
4 5
5 11
outputCopy
YES
YES
NO
Note
In the first test case, Adilbek decides not to optimize the program at all, since d≤n.
In the second test case, Adilbek can spend 1 day optimizing the program and it will run ⌈52⌉=3 days. In total, he will spend 4 days and will fit in the limit.
In the third test case, it’s impossible to fit in the limit. For example, if Adilbek will optimize the program 2 days, it’ll still work ⌈112+1⌉=4 days.
注意ceil的精度问题
#include<bits/stdc++.h>
using namespace std;
int t,n,d;
int main()
{
scanf("%d",&t);
while(t--)
{
cin>>n>>d;
if(d<=n)
{
puts("YES");
continue;
}
bool f=false;
for(double i=0;i<sqrt(d);i++)
{
if((i+(int)ceil(d/(i+1)))<=n)
{
f=true;
break;
}
}
if(f) puts("YES");
else puts("NO");
}
}