#include<queue>
#include<cstdio>
using namespace std;
#define MAXN 23170
struct node{
	int x,y,time;
};
queue <node> que;
int vis[MAXN][MAXN];
void bfs(int x,int y){
	node q;
	q.x=0;q.y=0;q.time=0;
	que.push(q);
	int next[4][2]={{-1,0},{1,0},{0,-1},{0,1}};
	while(!que.empty()){
		node p=que.front();
		que.pop();
		for(int i=0;i<=3;i++){
			q=p;
			q.x+=next[i][0];
			q.y+=next[i][1];
			q.time++;
			if(q.x>x||q.x<0||q.y>y||q.y<0||vis[q.x][q.y]!=0)
				continue;
			vis[q.x][q.y]=q.time;
			que.push(q);
		}
	}
}
int main(){
	int n;
	bool flag=0;
	scanf("%d",&n);
	for(int i=1;i<=n;i++){
		int t,x,y;
		scanf("%d %d %d",&t,&x,&y);
		if(flag) continue;
		if(vis[x][y]==0)
			bfs(x,y);
		if(vis[x][y]>t) flag=1;
	}
	if(flag) printf("No");
	else printf("Yes");
}