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 $\left\lceil \frac{d}{x + 1} \right\rceil$ days ($\left\lceil a \right\rceil$ is the ceiling function: $\left\lceil 2.4 \right\rceil = 3$, $\left\lceil 2 \right\rceil = 2$). The program cannot be run and optimized simultaneously, so the total number of days he will spend is equal to $x + \left\lceil \frac{d}{x + 1} \right\rceil$.

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 \le T \le 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 \le n \le 10^9$, $1 \le d \le 10^9$) — 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-----
Input
3
1 1
4 5
5 11

Output
YES
YES
NO



-----Note-----

In the first test case, Adilbek decides not to optimize the program at all, since $d \le n$.

In the second test case, Adilbek can spend $1$ day optimizing the program and it will run $\left\lceil \frac{5}{2} \right\rceil = 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 $\left\lceil \frac{11}{2+1} \right\rceil = 4$ days.

Difficulty: interview

Starter code:

Solutions:
t = int(input())
for _ in range(t):
    n, d = list(map(int, input().split()))
    if (1 - n) ** 2 - 4 * (d - n) >= 0:
        print('YES')
    else:
        print('NO')


import sys
for _ in range(int(input())):
    n, d = map(int, input().split())
    res = d
    for a in range(int(d**0.5) - 10, int(d**0.5) + 10):
        if a < 0:
            continue
        res = min(res, a + (d + a) // (a + 1))
    if res <= n:
        print("YES")
    else:
        print("NO")

from math import ceil
T = int(input())
for _ in range(T):
    N,D = list(map(int,input().split()))
    def calc(D,x):
        return x + ceil(D/(x+1))
    for i in range(N):
        if calc(D,i) <= N:
            print("YES")
            break
    else:
        print("NO")        


from math import ceil


test = int(input())
for z in range(test):
    day, work = list(map(int, input().split()))
    l = -1
    r = day
    while r - l > 1:
        m = (l + r) // 2
        new_work = ceil(work / (m + 1))
        if (new_work + m <= day):
            r = m
        else:
            l = m

    if (r + ceil(work / (r + 1)) <= day):
        print('YES')
    else:
        print('NO')


import math

for i in range(int(input())):
    res = 'NO'
    n,d = list(map(int, input().split()))

    for x in range(0,100000):
        nd = x+math.ceil(d/(x+1))
        if nd <= n:
            res='YES'
    print(res)


from math import sqrt

T = int(input())
for _ in range(T):
    n, d = list(map(int, input().split()))
    x = max(int(sqrt(d)) - 1, 0)
    if x + (d+x) // (x+1) <= n:
        print('YES')
    else:
        print('NO')


t = int(input())

for _ in range(t):
    n, d = map(int, input().split())
    u, v = max(0, int(d ** 0.5 - 1000)), min(n, int(d ** 0.5 + 1000))
    for i in range(u, v + 1):
        if i + d // (i + 1) + int(bool(d % (i + 1))) <= n:
            print('YES')
            break
    else:
        print('NO')

import math
t=int(input())
for _ in range(t):
    n,d=(map(int,input().split()))
    if d<=n:
        print("YES")
    else:
        flag=0
        for i in range(1,min(d,n)):
            if (i+math.ceil(d/(i+1)))<=n:
                print("YES")
                flag=1
                break
        if flag==0:                    
            print("NO")

import math
import sys
def listinput(): return list(map(int,input().split(' ')))

def main():
    answer = ""
    for test in range(int(input())):
        n,d = listinput()
        x = 0
        broken = False
        while x*x <= d:
            if x+(d+x)//(x+1) <= n:
                answer += "YES \n"
                broken = True
                break
            x+=1
        if not broken:
            answer += "NO \n"
    print(answer)

main()
    


from math import ceil
t=int(input())
for _ in range(t):
    n,d=map(int,input().split())
    x=int(ceil(d**0.5))
    if d<=n:
        print("YES")
        continue
    flag=0
    for i in range(1,x+1):
        if i+int(ceil(d/(i+1)))<=n:
            print("YES")
            flag=1
            break
    if flag==0:
        print("NO")

# -*- coding: utf-8 -*-

import math
import collections
import bisect
import heapq
import time
import random
import itertools
import sys
from typing import List

"""
created by shhuan at 2020/1/14 22:37

"""


def solve(N, D):
    X = int(math.sqrt(D))

    for x in range(max(0, X-10), min(N, X+10) + 1):
        if x + int(math.ceil(D / (x + 1))) <= N:
            return True
    return False


T = int(input())
ans = []
for ti in range(T):
    N, D = map(int, input().split())
    ans.append(solve(N, D))

print('\n'.join(['YES' if v else 'NO' for v in ans]))

import math
for _ in range(int(input())):
    n,d=list(map(int,input().split()))
    flag=False
    for i in range(n):
        if i+int(math.ceil(d/(i+1)))<=n:
            flag=True
            break
    if flag:
        print("YES")
    else:
        print("NO")
        


q = int(input())
for ew in range(q):
	n,d = map(int,input().split())
	#x + d/(x+1) <= n
	x = 0
	while (x+10)**2 <= d:
		x += 1
	dup = 1
	for i in range(100):
		if (x+i) + (d+x+i)//(x+1+i) <= n:
			print("YES")
			dup = 0
			break
	if dup:
		print("NO")

import math
t=int(input())
for i in range(t):
  n,d=map(int,input().split())
  flag=0
  for j in range(int(d**(0.5))+1):
    if math.ceil(d/(j+1)+j)<=n:print("YES");flag=1;break
  if not flag:print("NO")

from math import *
from collections import *
import sys
sys.setrecursionlimit(10**9)
t = int(input())
for y in range(t):
	d,n = list(map(int,input().split()))
	x = int(sqrt(n))
	ans = x-1 + ceil(n/x)
	#print(ans)
	if(ans > d): print("NO")
	else: print("YES")


from math import ceil
t = int(input())
for i in range(t):
    n, d = map(int, input().split())
    for x in range (0, n):
        if x + ceil(d/(x+1)) <= n:
            print("YES")
            break
    else:
        print("NO")

from math import *
T = int(input())
for kase in range(T):
    n, d = [int(x) for x in input().split()]
    m = ceil(sqrt(d))
    l, r = m-10, m+10
    l = max(0,l)
    ans = 1e100
    for x in range(l,r):
        ans = min(ans , x + ceil(d/(x+1)) )
    if ans<=n:
        print('YES')
    else:
        print('NO')

#!usr/bin/env python3
from collections import defaultdict,deque
from heapq import heappush, heappop
from itertools import permutations
import sys
import math
import bisect
def LI(): return [int(x) for x in sys.stdin.readline().split()]
def I(): return int(sys.stdin.readline())
def LS():return [list(x) for x in sys.stdin.readline().split()]
def S():
    res = list(sys.stdin.readline())
    if res[-1] == "\n":
        return res[:-1]
    return res
def IR(n):
    return [I() for i in range(n)]
def LIR(n):
    return [LI() for i in range(n)]
def SR(n):
    return [S() for i in range(n)]
def LSR(n):
    return [LS() for i in range(n)]

sys.setrecursionlimit(1000000)
mod = 1000000007

def solve():
    t = I()
    for i in range(t):
        n,d = LI()
        for x in range(40000):
            if x+math.ceil(d/(x+1)) <= n:
                print("YES")
                break
        else:
            print("NO")
    return

#Solve
def __starting_point():
    solve()

__starting_point()

import math
t=int(input())
for _ in range(t):
    n,d=map(int,input().split())
    tf=True
    for x in range(n+1):
        if x+math.ceil(d/(x+1))<=n:
            print("YES")
            tf=False
            break
    if tf:
        print("NO")

import math


def inp(dtype=str, strip=True):
    s = input()
    res = [dtype(p) for p in s.split()]
    res = res[0] if len(res) == 1 and strip else res
    return res


def problem1():
    t = inp(int)
    for _ in range(t):
        n, d = inp(int)
        res = False
        sq = math.floor(math.sqrt(d))
        for x in range(max(sq - 1000, 0), min(sq + 1000, n)):
            if x + math.ceil(d / (x + 1)) <= n:
                res = True
                break
        if res:
            print('YES')
        else:
            print('NO')


def problem2():
    pass


def problem3():
    pass


def problem4():
    pass


def problem5():
    pass


def problem6():
    pass


def __starting_point():
    # problem6()
    # problem5()
    # problem4()
    # problem3()
    # problem2()
    problem1()

__starting_point()

from math import ceil

import sys
reader = (s.rstrip() for s in sys.stdin)
input = reader.__next__


def solve():
    n,d = list(map(int, input().split()))
    ans = False
    if d <= n:
        ans = True
    for i in range(-20, 21):
        x = (n-1)//2+i
        if x>0:
            if x + ceil(d/(x+1)) <= n:
                ans = True
    if ans:
        print("YES")
    else:
        print("NO")

t = int(input())
for i in range(t):
    solve()


import math
for _ in range(int(input())):
    n,d=map(int,input().split())
    if n>=d:
        print("YES")
    else:
        flag=0
        for i in range(1,int(d**0.5)+2,1):
            if i+math.ceil(d/(i+1))<=n:
                flag=1
                break
        if flag==1:
            print("YES")
        else:
            print("NO")

from math import *

def bsearch(d, n):
    low = 0
    high = n
    while low <= high:
        mid = low + (high - low) // 2
        val = mid + int(ceil(d / (mid + 1)))
        if val > n:
            high = mid - 1
        else:
            return True
    return False

def __starting_point():
    for _ in range(int(input())):
        n, d = list(map(int, input().split()))
        if bsearch(d, n):
            print("YES")
        else:
            print("NO")
__starting_point()