#include <iostream>
using namespace std;
int year,month,day;
int mon[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
bool f[102][13][32]={false};
//判断是否为闰年
bool judgeLeapYear(int y)
{
if(y%400==0 || (y%100!=0 && y%4==0)){
return true;
}
return false;
}
//下一天
void nextDay(int &y,int &m,int &d)
{
d++;
if(d>mon[m]){
d=1;
m++;
if(m>12){
m=1;
y++;
}
}
}
//判断是否需要跳转到下一年
bool nextMonth(int &y,int &m,int &d)
{
if(m==12){
m=1;
y++;
return true;
}
if(d<=mon[m+1]){
m++;
return true;
}
else{
return false;
}
}
//判断是否可以获胜
void judge()
{
int i,j,k;
int y,m,d;
for (k = 5; k <= 31; ++k)
f[2001 - 1900][11][k] = true;
f[2001 - 1900][11][3] = true;
f[2001 - 1900][11][1] = true;
for(i=2001;i>=1900;i--){
if(judgeLeapYear(i))
mon[2]=29;
else
mon[2]=28;
for(j=12;j>=1;j--){
if(i==2001 && (j==12 || j==11))
continue;
for(k=mon[j];k>=1;k--){
y=i;
m=j;
d=k;
nextDay(y,m,d);
if(!f[y-1900][m][d])
f[i-1900][j][k]=true;
y=i;
m=j;
d=k;
if(nextMonth(y,m,d)){
if(!f[y-1900][m][d])
f[i-1900][j][k]=true;
}
}
}
}
}
int main()
{
int num;
cin>>num;
bool flag;
judge();
while(num--){
cin>>year>>month>>day;
if(f[year-1900][month][day])
cout<<"YES"<<endl;
else
cout<<"NO"<<endl;
}
return 0;
}