#include<bits/stdc++.h>
using namespace std;
int ans[2010][13][32];
bool acs[2010][13][32];
bool big[13]={0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1};
bool small[13]={0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0};
bool run(int y){
if(y%100==0&&y%400==0) return 1;
if(y%100!=0&&y%4==0) return 1;
return 0;
}
bool dfs(int y, int m, int d){
if(y>=2006&&m>=11&&d>=4) return 1;
//already known
if(acs[y][m][d]) return ans[y][m][d];
//not known yet
//illegal
if(d==31&&small[m]){
ans[y][m][d]=1;
acs[y][m][d]=1;
return 1;
}
else if(m==2){
if(run(y)&&d==30){
ans[y][m][d]=1;
acs[y][m][d]=1;
return 1;
}
else if(!run(y)&&d==29){
ans[y][m][d]=1;
acs[y][m][d]=1;
return 1;
}
}
//legal
int lm=m+1, ly=y, ld=d;//month++
if(lm==13){
lm=1; ly++;
}
int ry=y, rm=m, rd=d+1;//date++
if(rd==32&&big[rm]){
rd=1; rm++;
if(rm==13){
rm=1; ry++;
}
}
else if(rd==31&&small[rm]){
rd=1; rm++;
}
else if(rm==2){
if(rd==30&&run(ry)){
rd=1; rm++;
}
else if(rd==29&&!run(ry)){
rd=1; rm++;
}
}
//try to know
if(dfs(ly, lm, ld)&&dfs(ry, rm, rd)){
ans[y][m][d]=0;
acs[y][m][d]=1;
return 0;
}
else{
ans[y][m][d]=1;
acs[y][m][d]=1;
return 1;
}
}
int main(){
int x, y, z;
ans[2006][11][4]=0;
acs[2006][11][4]=1;
int q;
scanf("%d", &q);
dfs(1900, 1, 1);
while(q--){
scanf("%d %d %d", &x, &y, &z);
if(ans[x][y][z]) printf("YES\n");
else printf("NO\n");
}
return 0;
}