#include<iostream>
using namespace std;
int t;
long long n,m,k,p,x;
bool solve(){
if(n==1){
if(m>0||k-1<1) return false;
else return true;
}
else{
if(n-1<=m){
if(m==n*(n-1)/2){
if(k-1>1) return true;
else return false;
}
else if(m<n*(n-1)/2){
if(k-1>2) return true;
else return false;
}
else return false;
}
else return false;
}
}
int main(){
cin>>t;
while(t--){
cin>>n>>m>>k;
if(solve()){
cout<<"YES"<<endl;
}
else cout<<"NO"<<endl;
}
return 0;
}
n个点 最少需要n-1条边联通,最多需要n*(n-1)/2条边
特判n=1
n-1=<m<n*(n-1)/2时连接方式如图
m==n*(n-1)/2时 每个点都相连