var l[0..199999],r[0..199999],t[0..199999],s[0..199999],need[1..199999]:integer; i,j,k,o,p,n,m,now:integer; fin,fout:text;function cmp(i,j:integer):boolean {var} begin if t[i]<t[j] then cmp:=true else cmp:=false; end;begin assign(fin,"john.in");reset(fin); assign(fout,"john.out");rewrite(fout); n:=1; while (n<>0) begin readln(fin,n); if n = 0 then break; for i:=0 to n-1 do begin readln(fin,l[i],r[i]); t[i]:=l[i]+r[i]; need[i]:=trunc((r[i] - l[i]) / 2) + 1; s[i]:=i; end; {sort(s,s+n,cmp); 这段对s数组的前n个数根据cmp函数两两比较排序,小的在前大的在后,就是一个排序过程} now:=0;k:=0; for j:=0 to n - 1 do begin i:=s[j]; if now<l[i] then now:=l[i]; now:=now+need[i]; if now>r[i] then begin k:=1;break; end; end; if k=1 then writeln(fout,'No') {原来的代码里是直接屏幕输出的,但是看题目还有代码前面的意思应该是输出到文件的} else writeln(fout,'YES'); end; close(fin);close(fout);{原来的代码里没有关闭文件指针,这里添上了}end.