   const eps=0.00000001;  besk1=200000008;  nn=200000;
   label 1,2,3,4;
    type    real=double; int64=longint; {string=ansistring;}
    mas=array [-10..nn] of int64;   point=record x,y,z:real;end;
    zap=record p1,p2,p3 :int64;end; zap1=^zap;
    mass=array[0..nn] of longint;mass1=^mass;
    var ogr,q,modul,p,pp,tt,oldtt,qq,qq1,qq2,q1,q2,pos,pmax,imax,p1,p2,p3,p4,t,ot,nm,n,s1,s2,m,s,smin,cen,dl,t2,i1,besk:int64;
    time,jj,step, k,t1,ii,i,j:longint;
     aa,bb,cc:int64;
     l,r,c,dd,zz,z,y,x,aold,b,a:array[-10..2000000] of int64;
     right,down,dda:array[-10..2200,-10..2200] of longint;
   zanx,zany:array[-10..2000000] of boolean;
    sss:string;
     zan,fl:array[-100..2000000] of boolean;
    ss:string;ch:char;
    pole :array [-10..2010,-10..2010] of char;
    maxpr:array[0..nn] of string;
    ss1p1,ss1p2,ss2p1,ss2p2,ss1,ss2:array[0..nn] of string;
     ott,v0,v1,s0,t0:real;
     zv:point;
     newx,newy,xx,yy:array[-1..200000] of int64;

     yot:double;
       flag2,flag,flag1:boolean;
    function al(x,y:real):real; var t0,t1,p,s0,s1:real;
 begin
     if (x>0)and(y>=0) then p:=arctan(y/x);
     if x<0 then p:=pi+arctan(y/x);
     if(x>0)and(y<0) then p:=2*pi+arctan(y/x);
     if x=0 then if (y>=0) then p:=pi/2 else p:=3*pi/2;
     al:=p/pi*180;
 end;
  function min(x,y:int64):int64;begin min:=x;if y<x then min:=y; end;
  function max(x,y:int64):int64;begin max:=x;if y>x then max:=y; end;

  function nod(x,y:int64):int64; var z:int64;
begin   repeat  z:=x mod y;x:=y;y:=z;   until  z=0 ;  nod:=x;end;

function degg(a,k:int64):int64; var p:int64;
begin
 if k<=0 then degg:=1 else if odd(k) then degg:=degg(a,k-1)*a mod modul else
   begin  p:=degg(a,k div 2); degg:=p*p mod modul;   end;

end;

begin
   { assign (input,'input.txt');reset(input);
      assign (output,'output.txt'); rewrite(output);
    }
    read(p1,p2);
    flag:=true;
    if p1+1<p2 then flag:=false;
    if not odd(p1+p2) then flag:=false;
    if (p1=1)and(p2=0) then flag:=false;
    if (p1>=2)and(p2=1) then flag:=false;
    if (p1>=1)and(p2=0) then flag:=false;

    if flag then write('YES') else write('NO');

   1:          close(output);
end.

var x,y:longint;
begin
readln(x,y);
if y=0 then writeln('NO') else
 begin
  dec(y,1);
  dec(x,y);
  if (x mod 2=0) and (x>=0) then
   begin
    if (x<>0) and (y=0) then writeln('NO') else
     writeln('YES')
   end
  else writeln('NO')
 end
end.

var x,y:longint;
begin
  readln(y,x);
  if (x=1) and (y>0) or (x=0) then
  begin
    writeln('No');
    halt;
  end;
  y:=succ(y-x);
  if (y>=0) and (y mod 2=0) then writeln('Yes')
  else writeln('No');
end.

 var a,b:longint;
begin
 readln(a,b);
 dec(b);
 if b<0 then begin
   writeln('No');
   exit;
 end;
 if b=0 then
   if a>0 then begin
     writeln('No');
     exit;
   end;
 dec(a,b);
 if a<0 then begin
   writeln('No');
   exit;
 end;
 if a mod 2 = 0 then
   writeln('Yes')
 else
   writeln('No');
end.

program z1;
var x,y,nac,nac1:longint;
begin
read(x,y);
nac:=y;
if y=0 then begin write('NO');exit;end;
nac1:=y-1;
   while (nac1<x)and(nac1<>0) do inc(nac1,2);
if nac1=x then write('YES')
else write('NO');
end.

var
  x,y,ro,kl : longint;
begin
  readln(x,y);
  if (y-1>x) or ((y=1) and (x>0)) or (y=0) then begin writeln('No'); halt; end;
  kl:=y-1;
  ro:=y;
  if (x-kl) mod 2=0 then writeln('Yes') else writeln('No');
end.

var a,b:longint;
begin
  readln(a,b);
  if ((b=1)and(a<>0))or(b=0) then
  begin
    writeln('NO');
    exit;
  end;
  dec(b);
  if a-b<0 then writeln('NO') else
  if (a-b) mod 2=0 then writeln('YES') else writeln('NO');
end.

var a,b,x,y:longint;
begin
 read(x,y);
 if (y=1)and(x=0) then begin write('Yes');halt;end;
 if y<2 then begin write('No');halt;end;
 a:=y-1;
 b:=x-a ;
 if odd(b) or(b<0) then write('No')else
 write('Yes');
end.

var x,y:longint;
begin
 readln(x,y);
 y:=y-1;
 x:=x-y;
 if (x<0)
 then begin
  writeln('No');
  exit;
 end;
 if (x=0)
 then begin
  writeln('Yes');
  exit;
 end;
 if (x mod 2=0) and (y>0)
 then begin
  writeln('Yes');
  exit;
 end;
 writeln('No');

end.

program cloning;
uses wincrt;
var x,y,x1,y1,z : longint;
begin
readln(x,y);
x1 := 0;
y1 := 1;

y1:= 1+ abs(y-1);
x1:= abs(y-1);
if(x1 >= 1)then
begin
   x1 := x1 + abs(x - x1) div 2 * 2;
end;
if((x = x1) and (y = y1))then
begin
   writeln('Yes');
end
else
begin
   writeln('No');
end;
end.

var
n,m,x,y:int64;
begin
 read(n,m);
  x:=m-1;
  y:=n-x;
  if (n>0) and (m=0) then write('No') else
  if (m=1) and (n>0) then write('No') else
  if (y mod 2 =0) and (y>=0)  then write('Yes') else write('No');
  end.

var x,y:integer;
BEGIN
  read (x,y) ;
  if (y = 1) and (x = 0) or
    (y > 1) and (x+1 >= y) and (((y-1)mod 2) =(x mod 2)) then write('YES')
  else write('NO');
END.

program hrn;
 var
  a,b:longint;
 begin
  read(b,a);
  if a=0 then write('NO')else
   if(a=1)and(b<>0)then write('NO')else begin
    b:=b-a+1;
    if b<0 then write('NO');
    if b>=0 then if b mod 2=0 then write('YES')
            else write('NO');
  end;
 end.

program andyCF922A;
var n,m:longint;
 begin
  readln(n,m);
  if m=0 then
  begin
   writeln('No');
   halt;
  end
  else
   if (m=1)and(n<>0) then
   begin
    writeln('No');
    halt;
   end
   else
    begin
     n:=n-m+1;
      if n<0 then
      begin
       writeln('No');
       halt;
      end;
      if n>=0 then
       if (n mod 2)=0 then
        writeln('Yes')
       else
        writeln('No');
    end;
 end.

Var x,y: longint;
begin
Read(x,y);
y:=y-1;
If (y<=0) and (x>0) then begin Writeln('No');exit;end;
If x<y then Writeln ('No') else If (x-y) mod 2=0 then Writeln ('Yes')
else Writeln ('No')
end.

var x,y:longint;
begin
        readln(x,y);
         if y=0 then
                begin
                write('NO');
                  halt;
                end;
           if (y=1)  then
                    if x=0 then
                                begin
                                write('YES');
                                halt;
                                end
                        else
                                begin
                                write('NO');
                                halt;
                                end;

          if (x>=(y-1)) and ((x-y+1) mod 2=0)  then write('YES')
           else
             write('NO');

end.

var
  cop, n_orig, n_cop : longint;
begin
  cop := 0;
  readln(n_cop, n_orig);
  cop := n_orig - 1;
  if (n_cop = 0) and (n_orig = 1)
    then
      begin
        writeln('Yes');
        halt;
      end;
  if (cop > 0) and (n_cop >= cop) and((n_cop - cop) mod 2 = 0)
    then writeln('Yes')
    else writeln('No');

end.

var
q,x,y:longint;
begin
read(x,y);
q:=x-y+1;
if (x>0) and (y=0) then
begin write('No');
halt; end;
if (y=1) and (x>1) then
begin write('No');
halt; end;
if (q mod 2=0) and (q>=0)
then
write('Yes')
else write('No');
end.

var x,y,m,n:longint;
begin
readln(x,y);
m:=1;
n:=0;
if y>0 then
while m<>y do begin
              inc(m);
              inc(n);
              end;
if m=y then if (n<x) and (n>0) then while n<x do n:=n+2;
if (m=y) and (n=x) then writeln('YES')
                   else writeln('NO');
end.

var
  x, y : longint;
  ans : string;
begin
  readln(x, y);
  ans := 'No';
  if y - x = 1 then ans := 'Yes';
  if (x - y) mod 2 = 1 then ans := 'Yes';
  if (y = 1) and (x > 0) then ans := 'No';
  if y = 0 then ans := 'No';
  writeln(ans);
end.

program r_461_a;
 var i,k,o:longint;
begin
 readln(k,o);
 if((k>0)and(o=0))or((k mod 2=0)and(o mod 2=0))or((k mod 2=1)and(o mod 2=1))or(k-o<-1)or((o=1)and(k>0)) then writeln('No')
                                                                             else writeln('Yes');
end.

program z1;
 var x, y, z :longint;
begin
 readln( x, y );
 if ((x = 0 ) and (y <> 1 )) or (y=0) or (x=y)
 then write ('No')
 else if ((x+1 = y) and (y<>1)) or ((x=0) and (y = 1))
 then write ('Yes')
 else begin
 z := x - ( y - 1 );
 if (z mod 2 = 0) and (y <> 1) and(y < x )
    then write( 'Yes' )
    else if (y =1 ) and ((x-1) mod 2 =0 )
    then write ('Yes')
    else write('No')
end;
end.

var x,y:longint;
begin
read(x,y);
if (y=0) or ((x=0)and(y>1))or(x=y)or((x>y)and(y=1))then write('NO')
else if (x-y = 1)or(y-x=1) then write('YES')
else if y>x then write('NO')
else if ((x-y-1) mod 2)=1 then write('NO')
else write('YES');
end.

var x,y,ans:longint;
begin
 {assign(input,'input.txt');
 reset(input);}
 read(x); read(y);
 {close(input);
 assign(output,'output.txt');
 rewrite(output); }
 ans:=x-(y-1);
 if (ans>=0) and (ans mod 2 = 0) and not ((y=1) and (x>0)) and (y<>0) then write('Yes')
 else write('No');
 //close(output);
end.

var c, o: longint;

begin
    readln(c, o);
    if (o = 0) then
        writeln('No')
    else begin
        if (o = 1) and (c <> 0) then
            writeln('No')
        else begin
            if (c < o - 1) then
                writeln('No')
            else begin
                c := c - (o - 1);
                if ((c mod 2) = 0) then
                    writeln('Yes')
                else
                    writeln('No')
            end;
        end;
    end;
end.

var
kopy,kop1,r:longint;
begin
readln(kopy,r);
if (r=1)and (kopy>0) then begin writeln('No'); halt; end;
if r=0 then  begin writeln('No'); halt; end;
kop1:=r-1;
if kopy- kop1<0 then  begin writeln('No'); halt; end;
if (kopy-kop1) mod 2=0 then writeln('Yes') else writeln('No');
end.

//abcdefghijklmnopqrstuvwxyz
var
a,b:longint;
begin
readln(a,b);
if (b=1) and (a>0) then
  begin
  writeln('No');
  exit;
  end;
if (b-1>a) or (b=0) then
  begin
  writeln('No');
  exit;
  end;
a:=a-b+1;

if a mod 2=0 then writeln('Yes') else writeln('No');
end.

var p,p1,p2:longint;s,s1,s2,s3:string;mx1,mx2,mx3,mx4,mx5:int64;n1,n2,n3:real;m,a,t:array[1..10010] of longint;i,j,u:longint;n,no,vmax,max2,max3,f:int64;
Begin
 readln(mx1,mx2);
 if (mx2 = 0) then begin
 write('No',' ');
 halt;
 end;
 if (mx2 = 1) then begin
 if (mx1 = 0 ) then begin
 write('Yes',' ');
 halt;
 end
 else begin
 write('No',' ');
 halt;
 end;
 end;
 if (mx1-mx2+1)<0 then begin
 write('No',' ');
 halt;
 end;
 if ((mx1-mx2+1) mod 2 =1)  then begin
 write('No',' ');
 halt;
 end;
 write('Yes',' ');
 halt;
 End.

var x, y: int64;

begin
readln(x ,y);
if (y = 1) and (x > 0) then writeln('NO') else
if (x - y + 1 >= 0) and ((x - y + 1) mod 2 = 0) and (y>0)
	then writeln('Yes')
	else writeln('No');
end.

var i,j,x,y:longint;
 begin
  read (x,y);
   if y = 0 then writeln ('No')
      else
   if (x > 0) and (y=1) then writeln ('No')
    else
   if (x-y+1>=0) and ((x-y+1) mod 2 = 0) then writeln ('Yes')
        else writeln ('No');

 end.

var
  ex,ey,x,y : integer;
begin
  readln(ex,ey);
  x:=0;
  y:=1;
  while y<ey do
    begin
      inc(x);
      inc(y);
    end;
  while (x<ex) and (x>0) do inc(x,2);
  if (ex=x) and (ey=y)
    then writeln('Yes')
    else writeln('No');
end.

var i,j,x,y:longint;
 begin
  read (x,y);
   if y = 0 then writeln ('No')
      else
   if (x mod 2 = 0) and (y=1) and (x<>0) then writeln ('No')
    else
   if (x-y+1>=0) and ((x-y+1) mod 2 = 0) then writeln ('Yes')
        else writeln ('No');

 end.

var x,y:longint;
begin
read(x,y);

if (y=0)or(y-1>x) then begin write('no');halt;end;
if (y=1)and(x<>0)then begin write('no');halt;end;
y:=y-1;
if (x-y) mod 2=0then write('yes')
else write('no');

end.

program clone1;
var x,y,o,c:longint;
begin
readln(x,y);
o:=y;
c:=y-1;
while x>c do begin
c:=c+2;
end;
if (y=0) then writeln('No') else
if (y=1) and (x>0) or (y=0) and (x>0) then writeln('No') else
if (x=c) and (y=o) then writeln('Yes') else
if (y=0) and (x=0) then writeln('Yes') else writeln('No');
end.

var n,m:longint;
begin
 readln(n,m);
 if ((n-(m-1))mod 2=0)and(n-m>-2)and((m>1)or((m=1)and(n=0))) then
  writeln('Yes')
 else
  writeln('No');
end.

program clone1;
label 1;
var x,y,o,c:longint;
begin
readln(x,y);
o:=y;
c:=y-1;
while x>c do begin
c:=c+2;
end;
if (y=0) then writeln('No') else
if (y=1) and (x>0) or (y=0) and (x>0) then writeln('No') else
if (x=c) and (y=o) then writeln('Yes') else
if (y=0) and (x=0) then writeln('Yes') else writeln('No');
end.

var x, y:longint;
begin readln(x, y);
      if odd(x-y) and (y<>0) and (x>y-2) and not((y=1) and (x>0)) then writeln('Yes')
                                                                  else writeln('No');
end.

var
  x, y : integer;
begin
  read(x, y);
  if y = 0 then
    write('NO')
  else
    if (y = 1) and (x<>0) then
      write('NO')
    else
      begin
        x := x - y + 1;
        if x < 0 then
          write('NO');
        if x >= 0 then
          if x mod 2 = 0 then
            write('YES')
          else
            write('NO');
      end;
end.

var a,b:int64;
begin
read(b,a);
if a-1 = b then write('YES') else
if a-1>b then write('NO')  else
if ((b-a+1)mod 2=0)and(a>1) then write('YES') else
write('NO');

end.

var x,y: longint;
begin
readln (x,y);
if y=0 then writeln ('NO');
if y=1 then
    begin
    if x=0 then writeln ('YES')
    else writeln ('NO');
    end;
if y>=2 then
    begin
    if (x>=y-1) and ((x+1-y) mod 2 = 0) then writeln ('YES')
    else writeln ('NO');
    end;
end.

Var
  X, Y: LongInt;

Begin
  Read(X, Y);
  If ((Y = 0) and (X >= 0)) or ((Y = 1) and (X > 0)) then Write('No')
  Else If ((X - Y + 1) mod 2 = 0) and (Y - X <= 1) then Write('Yes')
  Else Write('No')
End.

var x, y : integer;

begin
  read (x, y);
  if (y = 0) then write ('NO')
  else if (y = 1) then
    begin
      if (x = 0) then write ('YES')
      else write ('NO');
    end
  else
    begin
      if (x >= y - 1) and ((x - y + 1) mod 2 = 0) then write ('YES')
      else write ('NO');
    end;
end.

program a1;
var
x,y:longint;
begin
read(x);
read(y);
if (y=0) or (y=1) and (x<>0)
then
write('No')
else
begin
if y-x>1 then
write('No')
else
begin
x:=(x-y-1) mod 2;
if x=0 then
write('Yes')
else
write('No');
end;
end;
end.

Var ik,io:integer;
Begin
Read(ik,io);
If (ik>io-2) and (io>0) and ((io>1)or(ik<1)) then begin
  If (ik-io+1) mod 2 = 0 then write('Yes') else write('No');
end else write('No');
End.

var x,y:int64;
begin
read(y,x);
if (x=1) and (y<>0) then begin  write('No'); exit end;
if (x=0) then begin  write('No'); exit end;
if (y>=x-1) and (y mod 2 = (x-1) mod 2) then write('Yes') else write('No')
end.

var x,y,k,i:longint;
begin
read(y,x);
if (x<=1)and(y<>0) then begin writeln('No'); halt; end;
if y-(x-1)<0 then begin writeln('No'); halt; end;
y:=y-(x-1);
while y>0 do begin
y:=y-2;
end;
if y=0 then writeln('Yes') else writeln('No');
end.

program p1;
type ma=1..1000000000;
var
x,y,k:ma;
begin
readln (x,y);
if ((x<>0) and (y=1)) or (y=0) or (x<y-1) then writeln ('no') else begin
k:=x-y+1;
if k mod 2=0 then writeln ('yes') else writeln ('no');
end;
end.

var a,b:longint;
begin
  read(b,a);
  if a-1 = b then write('YES') else
  if a-1>b then write('NO')  else
  if ((b-a+1)mod 2=0)and(a>1) then write('YES') else
  write('NO');
end.

program CloningToys;
var x,y: longint;
BEGIN
readln(x,y);
if (y=0) then begin
 writeln('no');
 exit;
end;
if (y>1) and (x<y-1) then begin
 writeln('no');
 exit;
end;
if (y=1) and (x<>0) then begin
 writeln('no');
 exit;
end;
x:=x-y+1;
if (odd(x)) then writeln('no') else writeln('yes');
END.

var
 x,y : longint;
begin
 readln(x,y);
 if (y=0) then begin writeln('No'); halt; end;
 if (y=1) then
  begin
   if x=0 then writeln('Yes') else writeln('No');
   halt;
  end;
 if x>=y-1 then
  begin
   if (x-(y-1)) mod 2=0 then writeln('Yes') else writeln('No');
  end else writeln('No');
end.

program Project2;

{$APPTYPE CONSOLE}

uses
  SysUtils;
var
  x, y, i: integer;
begin
  readln (x, y);
  i := y - 1;
  if (y <= 0)then begin
    writeln ('NO');
    exit;
  end;
  if (y = 1) then begin
    if (x = 0) then
      writeln ('YES')
    else
      writeln ('NO');
    exit;
  end;

  if ((x - i) mod 2 = 0) and (x >= (y - 1))then
    writeln ('YES')
  else
    writeln ('NO');
  readln;
  readln;
end.

var
  x, y: LongInt;
  ans: string;

begin
  ReadLn(x, y);
  ans := 'No';
  If y-x=1 then ans := 'Yes';
  If (x-y) mod 2 = 1 then ans := 'Yes';
  If y = 0 then ans := 'No';
  If (y = 1) and (x > 0) then ans := 'No';
  WriteLn(ans);
end.

var
  a,b:longint;
 begin
  read(b,a);
  if a=0 then write('NO')else
   if(a=1)and(b<>0)then write('NO')else begin
    b:=b-a+1;
    if b<0 then write('NO');
    if b>=0 then if b mod 2=0 then write('YES')
            else write('NO');
  end;
 end.

program zzz;
var
  t:boolean;
  x,y:longint;
begin
  readln(x,y);
  t:=false;
  if ((x-y+1)mod 2 =0)and (y>0)and(x>=y-1) then t:=true;
  if (t) and (y>1) or(x=0)and(y=1) then writeln('yes')
                                   else writeln('no');
end.

var x,y:integer;
begin
        readln(x,y);
         if y=0 then write('NO')
           else
            if (y=1) and (x=0) then write('YES');
        if ((x-y-1) and 1 )=(x and 1) then write('YES')
         else
           write('NO');
end.

Var o,ik,io:integer;
Begin
Read(ik,io);
If ik>io-2 then begin
  If (ik-io+1) mod 2 = 0 then write('Yes') else write('No');
end;
End.

var n,m:longint;
begin
 readln(n,m);
 if (n-(m-1))mod 2=0 then
  writeln('Yes')
 else
  writeln('No');
end.

Var x,y: longint;
begin
Read(x,y);
If y=0 then begin Writeln('No');exit;end;
If y-x=1 then begin Writeln('Yes');exit;end else
If x<y then Writeln ('No') else If (y-x) mod 2<>0 then Writeln ('Yes')
else Writeln ('No')
end.

program clone1;
label 1;
var x,y:integer;
begin
readln(x,y);
if (x>y) or (x=y-1) then
if (x mod 2=0) and (y mod 2=1) then writeln('Yes') else else writeln('No');
end.

var x,y,ans:longint;
begin
 {assign(input,'input.txt');
 reset(input);}
 read(x); read(y);
 {close(input);
 assign(output,'output.txt');
 rewrite(output); }
 ans:=x-(y-1);
 if (ans>=0) and (ans mod 2 = 0) and not ((y=1) and (x>0)) then write('Yes')
 else write('No');
 //close(output);
end.

var
n,m,x,y:int64;
begin
 read(n,m);
  x:=m-1;
  y:=n-x;
  if (m=1) and (n>0) then write('No') else
  if (y mod 2 =0) and (y>=0)  then write('Yes') else write('No');
  end.

program z1;
 var x, y, z :longint;
begin
 readln( x, y );
 if (y > x) and (x + 1 <> y)
    then write( 'No' )
    else begin
 z := x - ( y - 1 );
 if (z mod 2 = 0) or (x+1 = y)
    then write( 'Yes' )
    else write( 'No' );
end;
end.

program zzz;
var
  t:boolean;
  x,y:longint;
begin
  readln(x,y);
  t:=false;
  if (x>0) and (y>1) then
  begin
    if (x-y+3)mod 2 =0 then t:=true;
    if (x-y)mod 2 = 0 then t:=true;
  end;
  if (x>0)and(y=0)and(x mod 2=1) then t:=true;
  if (x=0)and(y<2) then
    t:=true;
  if t then writeln('yes')
       else writeln('no');
end.

var x, y, n:longint;
begin readln(x, y);
      n:=x-y+1;
      if (n mod 2=0) and (y<>0) and (x>0) and (x>y-2) then writeln('Yes')
                                                       else writeln('No');
end.

var a,b:longint;
begin
  readln(a,b);
  if ((b=1)and(a<>0))or(b=0) then
  begin
    writeln('NO');
    exit;
  end;
  dec(b);
  if (a-b) mod 2=0 then writeln('YES') else writeln('NO');
end.

var
  x, y, copya : longint;
begin
  readln(x, y);
  copya := 0;
  inc(copya, y - 1);
  if (x < copya) or ((x - copya) mod 2 <> 0) then writeln('NO')
  else if (x = copya) or ((x - copya) mod 2 = 0) then writeln('Yes');
end.

program Project2;

{$APPTYPE CONSOLE}

uses
  SysUtils;
var
  x, y, i: integer;
begin
  readln (x, y);
  if (x = 1) and (y = 0) then begin
    writeln ('NO');
    exit;
  end;
  i := y - 1;
  if (i <= 0)then begin
    writeln ('YES');
    exit;
  end;

  if ((x - i) mod 2 = 0) and (x >= (y - 1))then
    writeln ('YES')
  else
    writeln ('NO');
  readln;
  readln;
end.

var x, y, n:longint;
begin readln(x, y);
      n:=x-y+1;
      if (n mod 2=0) and (x+1>x) and (n>=0) then writeln('Yes')
                                            else writeln('No');
end.

program r_461_a;
 var i,k,o:longint;
begin
 readln(k,o);
 if((k>0)and(o=0))or((k mod 2=0)and(o mod 2=0))or((k mod 2=0)and(o mod 2=0))and(k-o<-1) then writeln('No')
                                                                             else writeln('Yes');
end.

var x, y:longint;
begin readln(x, y);
      if odd(x-y) and (y<>0) and (x>y-2) and ((y<>1) and (x<>2)) then writeln('Yes')
                                                                 else writeln('No');
end.

var i,j,x,y:longint;
 begin
  read (x,y);
   if y = 0 then writeln ('No')
      else
   if (x mod 2 = 0) and (y=1) then writeln ('No')
    else
   if (x-y+1>=0) and ((x-y+1) mod 2 = 0) then writeln ('Yes')
        else writeln ('No');

 end.

var
  x, y : longint;
  ans : string;
begin
  readln(x, y);
  ans := 'No';
  if abs(y - x) = 1 then ans := 'Yes';
  if (y = 1) and (x > 0) then ans := 'No';
  if y = 0 then ans := 'No';
  writeln(ans);
end.

var
n,m,x,y:int64;
begin
 read(n,m);
  x:=m-1;
  y:=x;
  if (y=n) then write('Yes') else
  begin
  y:=y+x*2;
  if ((n-y) mod 2 =0) and (n-y>=0) then write('Yes') else write('No');
  end;
  end.

Var x,y: longint;
begin
Read(x,y);
y:=y-1;
If x<y then Writeln ('No') else If (x-y) mod 2=0 then Writeln ('Yes')
else Writeln ('No')
end.

program r_461_a;
 var i,k,o:longint;
begin
 readln(k,o);
 if((k>0)and(o=0))or((k mod 2=0)and(o mod 2=0))or((k mod 2=1)and(o mod 2=1))or(k-o<-1) then writeln('No')
                                                                             else writeln('Yes');
end.

program z1;
var x,y,nac,nac1:longint;
begin
nac:=1;
nac1:=0;
read(x,y);
while nac<y do
   begin
   inc(nac);
   inc(nac1);
   end;
if (x-nac1) mod 2=0 then write('YES')
else write('NO');
end.

var n,m:longint;
begin
 readln(n,m);
 if ((n-(m-1))mod 2=0)and(n-m>-2) then
  writeln('Yes')
 else
  writeln('No');
end.

   const eps=0.00000001;  besk1=200000008;  nn=200000;
   label 1,2,3,4;
    type    real=double; int64=longint; {string=ansistring;}
    mas=array [-10..nn] of int64;   point=record x,y,z:real;end;
    zap=record p1,p2,p3 :int64;end; zap1=^zap;
    mass=array[0..nn] of longint;mass1=^mass;
    var ogr,q,modul,p,pp,tt,oldtt,qq,qq1,qq2,q1,q2,pos,pmax,imax,p1,p2,p3,p4,t,ot,nm,n,s1,s2,m,s,smin,cen,dl,t2,i1,besk:int64;
    time,jj,step, k,t1,ii,i,j:longint;
     aa,bb,cc:int64;
     l,r,c,dd,zz,z,y,x,aold,b,a:array[-10..2000000] of int64;
     right,down,dda:array[-10..2200,-10..2200] of longint;
   zanx,zany:array[-10..2000000] of boolean;
    sss:string;
     zan,fl:array[-100..2000000] of boolean;
    ss:string;ch:char;
    pole :array [-10..2010,-10..2010] of char;
    maxpr:array[0..nn] of string;
    ss1p1,ss1p2,ss2p1,ss2p2,ss1,ss2:array[0..nn] of string;
     ott,v0,v1,s0,t0:real;
     zv:point;
     newx,newy,xx,yy:array[-1..200000] of int64;

     yot:double;
       flag2,flag,flag1:boolean;
    function al(x,y:real):real; var t0,t1,p,s0,s1:real;
 begin
     if (x>0)and(y>=0) then p:=arctan(y/x);
     if x<0 then p:=pi+arctan(y/x);
     if(x>0)and(y<0) then p:=2*pi+arctan(y/x);
     if x=0 then if (y>=0) then p:=pi/2 else p:=3*pi/2;
     al:=p/pi*180;
 end;
  function min(x,y:int64):int64;begin min:=x;if y<x then min:=y; end;
  function max(x,y:int64):int64;begin max:=x;if y>x then max:=y; end;

  function nod(x,y:int64):int64; var z:int64;
begin   repeat  z:=x mod y;x:=y;y:=z;   until  z=0 ;  nod:=x;end;

function degg(a,k:int64):int64; var p:int64;
begin
 if k<=0 then degg:=1 else if odd(k) then degg:=degg(a,k-1)*a mod modul else
   begin  p:=degg(a,k div 2); degg:=p*p mod modul;   end;

end;

begin
   { assign (input,'input.txt');reset(input);
      assign (output,'output.txt'); rewrite(output);
    }
    read(p1,p2);
    flag:=true;
    if p1+1<p2 then flag:=false;
    if not odd(p1+p2) then flag:=false;
    if (p1=1)and(p2=0) then flag:=false;
    if (p1>=2)and(p2=1) then flag:=false;

    if flag then write('YES') else write('NO');

   1:          close(output);
end.

var x, y, n:longint;
begin readln(x, y);
      n:=x-y+1;
      if (n mod 2=0) and (y<>0) and (n>=0) and (x>y-2) then writeln('Yes')
                                                       else writeln('No');
end.

var
n,m,x,y:int64;
begin
 read(n,m);
  x:=m-1;
  y:=n-x;
  if (m=1) and (n>0) then write('No') else
  if (y mod 2 =0) and (y>=0)  then write('Yes') else write('No');
  end.

program clone1;
var x,y:integer;
begin
readln(x,y);
if (x mod 2=0) and (y mod 2=1) then writeln('Yes') else writeln('No');
end.

program Project2;

{$APPTYPE CONSOLE}

uses
  SysUtils;
var
  x, y, i: integer;
begin
  readln (x, y);
  i := y - 1;
  if (y <= 0)then begin
    writeln ('NO');
    exit;
  end;
  if (y = 1) and (x = 0) then begin
    writeln ('YES');
    exit;
  end;

  if ((x - i) mod 2 = 0) and (x >= (y - 1))then
    writeln ('YES')
  else
    writeln ('NO');
  readln;
  readln;
end.

program Project2;

{$APPTYPE CONSOLE}

uses
  SysUtils;
var
  x, y, i: integer;
begin
  readln (x, y);
  if (x = 1) and (y = 0) then begin
    writeln ('NO');
    exit;
  end;
  i := y - 1;
  if ((x - i) mod 2 = 0) then
    writeln ('YES')
  else
    writeln ('NO');
  readln;
  readln;
end.

program z1;
 var x, y, z :longint;
begin
 readln( x, y );
 if x < y
 then write ('No')
 else begin
 if (y = 1) and (x - y mod 2 <> 0)
 then write ('No')
 else begin
 if (y > x) and (x + 1 <> y) or (y=0)
    then write( 'No' )
    else begin
 z := x - ( y - 1 );
 if (z mod 2 = 0) or (x+1 = y)
    then write( 'Yes' )
    else write( 'No' );
end;
end;
end;
end.

var
  x, y, copya : longint;
begin
  readln(x, y);
  copya := 0;
  inc(copya, y - 1);
  if (x = 0) or (y = 0) or (y = 1) then begin writeln('NO');exit;end;
  if (x < copya) or ((x - copya) mod 2 <> 0) then writeln('NO')
  else if (x = copya) or ((x - copya) mod 2 = 0) then writeln('Yes');
end.

var x,y:longint;
begin
        readln(x,y);
         if y=0 then write('NO');

           if (y=1)  then
                    if x=0 then write('YES')
                        else write('NO');
          if (x>=(y-1)) and ((x-y+1) mod 2=0)  then write('YES')
           else
             write('NO');

end.

var x, y, n:longint;
begin readln(x, y);
      n:=x-y+1;
      if (n mod 2=0) and (y-1>0) and (n>=0) then writeln('Yes')
                                            else writeln('No');
end.

var x, y, n:longint;
begin readln(x, y);
      n:=x-y+1;
      if (n mod 2=0) and (y<>0) and (x>y-2) then writeln('Yes')
                                            else writeln('No');
end.

program Project2;

{$APPTYPE CONSOLE}

uses
  SysUtils;
var
  x, y, i: integer;
begin
  readln (x, y);
  if (x = 1) and (y = 0) then begin
    writeln ('NO');
    exit;
  end;
  i := y - 1;
  if ((x - i) mod 2 = 0) and (i < (y - 1))then
    writeln ('YES')
  else
    writeln ('NO');
  readln;
  readln;
end.

program z1;
var x,y,nac,nac1:longint;
begin
read(x,y);
nac:=y;
if y=0 then begin write('NO');exit;end;
nac1:=y-1;
if y=1 then nac1:=y;
   while nac1<x do inc(nac1,2);
if nac1=x then write('YES')
else write('NO');
end.

var
  x,y,ro,kl : longint;
begin
  readln(x,y);
  if y>=x then begin writeln('No'); halt; end;
  kl:=y-1;
  ro:=y;
  if (x-kl) mod 2=0 then writeln('Yes') else writeln('No');
end.

var x,y,k,i:longint;
begin
read(y,x);
if y-(x-1)<0 then begin writeln('No'); halt; end;
y:=y-(x-1);
while y>0 do begin
y:=y-2;
end;
if y=0 then writeln('Yes') else writeln('No');
end.

var i,j,x,y:longint;
 begin
  read (x,y);
   if y = 0 then writeln ('No')
      else
   if (x mod 2 = 0) and (y=1) then writeln ('No')
    else
   if (x-y+1>=0) and ((x-y+1) mod 2 = 0) then writeln ('Yes')
        else writeln ('No');

 end.

var x,y:longint;
begin
read(x,y);
if (y=0) or ((x=0)and(y>1))or(x=y)or((x-y=1)and(y=1))then write('NO')
else if (x-y = 1)or(y-x=1) then write('YES')
else if y>x then write('NO')
else if ((x-y-1) mod 2)=1 then write('NO')
else write('YES');
end.

var x,y,k,i:longint;
begin
read(x,y);
while x>1 do begin
inc(i);
x:=x div 2;
k:=k+i;
end;
if y-k>=0 then writeln('Yes') else writeln('No');
end.

program p1;
type ma=1..1000000000;
var
x,y,k:ma;
begin
readln (x,y);
if ((x<>0) and (y=1)) or (y=0) or (x<y) then writeln ('no') else begin
k:=x-y+1;
if k mod 2=0 then writeln ('yes') else writeln ('no');
end;
end.

program r_461_a;
 var i,k,o:longint;
begin
 readln(k,o);
 if (k-o=1)or((o mod 2=0)and(k mod 2=1))or((o mod 2=1)and(k mod 2=0))
 then writeln('Yes')
                                 else writeln('No');
end.

var x,y:longint;
begin
readln(x,y);
if (y=0) or (x=0) then writeln('NO') else
 begin
  dec(y,1);
  dec(x,y);
  if (x mod 2=0) and (y<>0) and (x>=0) then writeln('YES') else writeln('NO')
 end
end.

program Project2;

{$APPTYPE CONSOLE}

uses
  SysUtils;
var
  x, y, i, j: integer;
begin
  readln (x, y);
  if (x = 1) and (y = 0) then begin
    writeln ('NO');
    exit;
  end;
  i := y - 1;
  if (i mod 2 = 0) then
    writeln ('YES')
  else
    writeln ('NO');
  readln;
  readln;
end.

program z1;
var x,y,nac,nac1:longint;
begin
read(x,y);
nac:=y;
if y=0 then begin write('NO');exit;end;
nac1:=y-1;
   while nac1<x do inc(nac1,2);
if nac1=x then write('YES')
else write('NO');
end.

program cloning;
uses wincrt;
var x,y,z : longint;
begin
readln(x,y);
dec(y);
if((x-y) mod 2 = 0)then
begin
   writeln('Yes');
end
else
begin
   writeln('No');
end;
end.

var x,y:longint;
begin
        readln(x,y);
         if y=0 then write('NO');

           if (y=1)  then
                    if x=0 then write('YES')
                        else write('NO');
          if (x>=(y-1)) and ((x-y+1) mod 2=0)  then write('YES')
           else
             write('NO');

end.

program Project2;

{$APPTYPE CONSOLE}

uses
  SysUtils;
var
  x, y, i, j: integer;
begin
  readln (x, y);
  if (x = 1) and (y = 0) then begin
    writeln ('NO');
    exit;
  end;
  i := y - 1;
  while (i < x) do begin
    inc (i, 2);
  end;
  if (i = x) then
    writeln ('YES')
  else
    writeln ('NO');
  readln;
  readln;
end.

var x,y: longint;
begin
readln (x,y);
if (x>=y-1) and ((x+1-y) mod 2 = 0) then writeln ('YES') else writeln ('NO');
end.

program CloningToys;
var x,y: longint;
BEGIN
readln(x,y);
//countOforiginal:=0;
//countOfCopies:=0;
if (y=0) then begin
 writeln('no');
 exit;
end;
if (y>1) and (x<y-1) then begin
 writeln('no');
 exit;
end;
x:=x-y+1;
if (odd(y)) then writeln('yes') else writeln('no');
END.

var x,y:int64;
begin
read(y,x);
if (y=1) and (x<>0) then begin  write('No'); exit end;
if (y=0) then begin  write('No'); exit end;
if (y>=x-1) and (y mod 2 = (x-1) mod 2) then write('Yes') else write('No')
end.

var x,y:longint;
begin
read(x,y);
if (y=0) or ((x=0)and(y>1))or(x=y)then write('NO')
else if (x-y=1)or(y-x=1) then write('YES')
else if y>x then write('NO')
else if ((x-y-1) mod 2)=1 then write('NO')
else write('YES');
end.

program zzz;
var
  x,y:longint;
begin
  readln(x,y);
  if ((x-y+1)mod 2=0)and(x>0)and (y>0)  then writeln('yes')
                     else writeln('no');
end.

var x, y, n:longint;
begin readln(x, y);
      n:=y-x+1;
      if (n mod 2=0) and (x+1>x) and (n>=0) then writeln('Yes')
                                            else writeln('No');
end.

Var x,y: longint;
begin
Read(x,y);
y:=y-1;
If x<y then Writeln ('No') else If (x-y) mod 2=0 then Writeln ('Yes')
else Writeln ('No')
end.

var x,y,k,i:longint;
begin
read(x,y);
while x>1 do begin
inc(i);
x:=x div 2;
k:=k+i;
end;
if y-k>=0 then writeln('Yes') else writeln('No');
end.

program r_461_a;
 var i,k,o:longint;
begin
 readln(k,o);
 if((k>0)and(o=0))or((k mod 2=0)and(o mod 2=0))or((k mod 2=0)and(o mod 2=0))and(k-o<-1) then writeln('No')
                                                                             else writeln('Yes');
end.

program cloning;
uses wincrt;
var x,y,z : longint;
begin
readln(x,y);
dec(y);
if(((x-y) mod 2 = 0 )and (x >= y))then
begin
   writeln('Yes');
end
else
begin
   writeln('No');
end;
end.

var
  x, y, copya : longint;
begin
  readln(x, y);
  copya := 0;
  inc(copya, y - 1);
  if (x < copya) or ((x - copya) mod 2 <> 0) then writeln('NO')
  else if (x = copya) or ((x - copya) mod 2 = 0) then writeln('Yes');
end.

program zzz;
var
  t:boolean;
  x,y:longint;
begin
  readln(x,y);
  t:=false;
  if (x>0) and (y>1) then
  begin
    if (x-y+3)mod 2 =0 then  t:=true;
  end;
  if (x=0)and(y=1) then
    t:=true;
  if t then writeln('yes')
       else writeln('no');
end.

var x,y:integer;
begin
        readln(x,y);
         if y=0 then write('NO')
           else
            if (y=1) and (x=0) then write('YES');
        if ((x-y-1) and 1 )=(x and 1) then write('YES')
         else
           write('NO');
end.

program r_461_a;
 var i,k,o:longint;
begin
 readln(k,o);
 if (k-o=1)or((o mod 2=0)and(k mod 2=1))or((o mod 2=1)and(k mod 2=0))
 then writeln('Yes')
                                 else writeln('No');
end.

var x,y,m,n:longint;
begin
readln(x,y);
m:=1;
n:=0;
if y>0 then
while m<>y do begin
              inc(m);
              inc(n);
              end;
if m=y then if n<x then while n<x do n:=n+2;
if (m=y) and (n=x) then writeln('YES')
                   else writeln('NO');
end.

program Project2;

{$APPTYPE CONSOLE}

uses
  SysUtils;
var
  x, y, i: integer;
begin
  readln (x, y);
  if (x = 1) and (y = 0) then begin
    writeln ('NO');
    exit;
  end;
  i := y - 1;
  if ((x - i) mod 2 = 0) and (x >= (y - 1)) and ((x-i) <> x)then
    writeln ('YES')
  else
    writeln ('NO');
  readln;
  readln;
end.

var
n,m,x,y:int64;
begin
 read(n,m);
  x:=m-1;
  y:=n-x;
  if (y mod 2 =0)   then write('Yes') else write('No');
  end.

var x,y:longint;
begin
read(x,y);
y:=y-1;
if (x-y) mod 2=0then write('yes')
else write('no');
end.

program zzz;
var
  t:boolean;
  x,y:longint;
begin
  readln(x,y);
  t:=false;
  if (x>0) and (y>=1) then
  begin
    if (x-y+1)mod 2 =0 then t:=true;
    if (x-y)mod 2 = 0 then t:=true;
  end;
  if (x=0)and(y<2) then
    t:=true;
  if t then writeln('yes')
       else writeln('no');
end.

var
  x, y: LongInt;

begin
  ReadLn(x, y);
  If abs(x-y) mod 2 = 1 then WriteLn('Yes') else WriteLn('No');
end.

var
  ex,ey,x,y : integer;
begin
  readln(ex,ey);
  x:=0;
  y:=1;
  while y<ey do
    begin
      inc(x);
      inc(y);
    end;
  while x<ex do inc(x,2);
  if (ex=x) and (ey=y)
    then writeln('Yes')
    else writeln('No');
end.

var
n,m,x,y:int64;
begin
 read(n,m);
  x:=m-1;
  y:=x;
  if (y=n) then write('Yes') else
  begin
  y:=y+x*2;
  if ((n-y) mod 2 =0) and (n-y>=0) then write('Yes') else write('No');
  end;
  end.

Var o,ik,io:integer;
Begin
Read(ik,io);
If ik>io-2 then begin
  If (ik-io+1) mod 2 = 0 then write('Yes') else write('No');
end else write('No');
End.

var x, y, n:longint;
begin readln(x, y);
      n:=x-y+1;
      if (n mod 2=0) and (y<>0) and (n>=0) and (x>y-2) then writeln('Yes')
                                                       else writeln('No');
end.

   const eps=0.00000001;  besk1=200000008;  nn=200000;
   label 1,2,3,4;
    type    real=double; int64=longint; {string=ansistring;}
    mas=array [-10..nn] of int64;   point=record x,y,z:real;end;
    zap=record p1,p2,p3 :int64;end; zap1=^zap;
    mass=array[0..nn] of longint;mass1=^mass;
    var ogr,q,modul,p,pp,tt,oldtt,qq,qq1,qq2,q1,q2,pos,pmax,imax,p1,p2,p3,p4,t,ot,nm,n,s1,s2,m,s,smin,cen,dl,t2,i1,besk:int64;
    time,jj,step, k,t1,ii,i,j:longint;
     aa,bb,cc:int64;
     l,r,c,dd,zz,z,y,x,aold,b,a:array[-10..2000000] of int64;
     right,down,dda:array[-10..2200,-10..2200] of longint;
   zanx,zany:array[-10..2000000] of boolean;
    sss:string;
     zan,fl:array[-100..2000000] of boolean;
    ss:string;ch:char;
    pole :array [-10..2010,-10..2010] of char;
    maxpr:array[0..nn] of string;
    ss1p1,ss1p2,ss2p1,ss2p2,ss1,ss2:array[0..nn] of string;
     ott,v0,v1,s0,t0:real;
     zv:point;
     newx,newy,xx,yy:array[-1..200000] of int64;

     yot:double;
       flag2,flag,flag1:boolean;
    function al(x,y:real):real; var t0,t1,p,s0,s1:real;
 begin
     if (x>0)and(y>=0) then p:=arctan(y/x);
     if x<0 then p:=pi+arctan(y/x);
     if(x>0)and(y<0) then p:=2*pi+arctan(y/x);
     if x=0 then if (y>=0) then p:=pi/2 else p:=3*pi/2;
     al:=p/pi*180;
 end;
  function min(x,y:int64):int64;begin min:=x;if y<x then min:=y; end;
  function max(x,y:int64):int64;begin max:=x;if y>x then max:=y; end;

  function nod(x,y:int64):int64; var z:int64;
begin   repeat  z:=x mod y;x:=y;y:=z;   until  z=0 ;  nod:=x;end;

function degg(a,k:int64):int64; var p:int64;
begin
 if k<=0 then degg:=1 else if odd(k) then degg:=degg(a,k-1)*a mod modul else
   begin  p:=degg(a,k div 2); degg:=p*p mod modul;   end;

end;

begin
   { assign (input,'input.txt');reset(input);
      assign (output,'output.txt'); rewrite(output);
    }
    read(p1,p2);
    flag:=true;
    if p1+1<p2 then flag:=false;
    if not odd(p1+p2) then flag:=false;
    if flag then write('YES') else write('NO');

   1:          close(output);
end.

var x, y, n:longint;
begin readln(x, y);
      n:=y-x+1;
      if (n mod 2=0) and (x+1>x) and (n>=0) then writeln('Yes')
                                            else writeln('No');
end.

var
  x, y : longint;
  ans : string;
begin
  readln(x, y);
  ans := 'No';
  if abs(y - x) = 1 then ans := 'Yes';
  if (y = 1) and (x > 0) then ans := 'No';
  if y = 0 then ans := 'No';
  writeln(ans);
end.

var x,y:integer;
begin
        readln(x,y);
         if y=0 then write('NO');
            if (y=1) and (x=0) then write('YES')
             else
                write('N0');
            if y>1 then
        if ((x-y-1) and 1 )=(x and 1) then write('YES')
         else
           write('NO');
end.

Var
  X, Y: LongInt;

Begin
  Read(X, Y);
  If ((X - Y + 1) mod 2 = 0) and (Y - X <= 1) then Write('Yes')
  Else Write('No')
End.

var x,y:longint;
begin
readln(x,y);
if y=0 then writeln('NO') else
 begin
  dec(y,1);
  dec(x,y);
  if (x mod 2=0) and (y<>0) and (x>=0) then writeln('YES') else writeln('NO')
 end
end.

program r_461_a;
 var i,k,o:longint;
begin
 readln(k,o);
 if (k-o=1)or((o mod 2=0)and(k mod 2=1))or((o mod 2=1)and(k mod 2=0))
 then writeln('Yes')
                                 else writeln('No');
end.

program CloningToys;
var x,y: longint;
BEGIN
readln(x,y);
if (y=0) then begin
 writeln('no');
 exit;
end;
if (y>1) and (x<y-1) then begin
 writeln('no');
 exit;
end;
if (y=1) and (x<>0) then begin
 writeln('no');
end;
x:=x-y+1;
if (odd(x)) then writeln('no') else writeln('yes');
END.

program Project2;

{$APPTYPE CONSOLE}

uses
  SysUtils;
var
  x, y, i, j: int64;
begin
  readln (x, y);
  i := y - 1;
  while (i < x) do begin
    inc (i, 2);
  end;
  if (i = x) then
    writeln ('YES')
  else
    writeln ('NO');
  readln;
  readln;
end.

program zzz;
var
  x,y:longint;
begin
  readln(x,y);
  if ((x-y+1)mod 2=0)and(x>0)and (y>1)  then writeln('yes')
                     else writeln('no');
end.

var x,y:longint;
begin
read(x,y);
if (x=y)or(y-x=1) then write('YES')
else if y>x then write('NO')
else if (x-y-1 mod 2)=1 then write('NO')
else write('YES');
end.

var x,y:longint;
begin
read(x,y);
if (x-y=1)or(y-x=1) then write('YES')
else if y>x then write('NO')
else if ((x-y-1) mod 2)=1 then write('NO')
else write('YES');
end.