type rec=record
    a,b,c:longint;
end;
var i,j,m,n,test,x,tot,a,b,c,h,ii,aa,tot1,tot2,bb,cc:longint;
    visit:array[0..200]of boolean;
    road,road1,road2:array[0..20]of longint;
    solved:boolean;
    ans:array[0..200]of rec;
procedure dfs3(u:longint);
var x,a,b,c,temp:longint;
begin
    visit[u]:=true;
    inc(tot);
    road[tot]:=u;
    writeln('? ',u);
    flush(output);
    read(x);
    if x=2 then begin
        readln(a,b);
        writeln('! ',u);
        solved:=true;
        exit;
    end;
    if x=1 then begin
        readln(a);
        exit;
    end;
    readln(a,b,c);
    ans[u].a:=a;
    ans[u].b:=b;
    ans[u].c:=c;
    if visit[a]=false then temp:=a else if visit[b]=false then temp:=b else temp:=c;
    dfs3(temp);
end;
procedure dfs4(u,dep:longint);
var x,a,b,c:longint;
begin
    if dep>2 then exit;
    //if visit[u]=false tehn
    visit[u]:=true;
    inc(tot);
    road[tot]:=u;

    writeln('? ',u);
    flush(output);
    read(x);
    if x=2 then begin
        readln(a,b);
        writeln('! ',u);
        flush(output);
        solved:=true;
        exit;
    end else if x=1 then begin
        readln(a);
        exit;
    end else begin
        readln(a,b,c);
        ans[u].a:=a;
        ans[u].b:=b;
        ans[u].c:=c;
        {if visit[a]=false then begin
            dfs4(a,dep+1);
        end else if visit[b]=false then begin
            dfs4(b,dep+1);
        end else begin
            dfs4(c,dep+1);
        end;     }
        if visit[a]=false then begin
            dfs4(a,dep+1);
            if solved then exit;
        end;
        if visit[b]=false then begin
            dfs4(b,dep+1);
            if solved then exit;
        end;
        if visit[c]=false then begin
            dfs4(c,dep+1);
            if solved then exit;
        end;
    end;
end;
procedure dfs2(u:longint);
var x,a,b,c:longint;
begin
    visit[u]:=true;
    inc(tot);
    road[tot]:=u;
    writeln('? ',u);
    read(x);
    if x=2 then begin
        readln(a,b);
        writeln('! ',u);
        solved:=true;
        exit;
    end else if x=1 then begin
        readln(a);
        exit;
    end else begin
        readln(a,b,c);
        ans[u].a:=a;
        ans[u].b:=b;
        ans[u].c:=c;
        if visit[a]=false then begin
            dfs2(a);
        end else if visit[b]=false then begin
            dfs2(b);
        end else begin
            dfs2(c);
        end;
    end;
end;
procedure dfs(now,dep:longint);
var x,temp,aa,a,b,c,bb,cc,temp2:longint;
begin
    visit[now]:=true;
    writeln('? ',now);
    flush(output);
    read(x);
    if x=2 then begin
        readln(a,b);
        writeln('! ',now);
        flush(output);
        solved:=true;
        exit;
    end;
    readln(a,b,c);
    if (dep=3) and (h=7) then begin
       tot:=0;
       if visit[a]=false then temp:=a else if visit[b]=false then temp:=b else temp:=c;
       dfs4(temp,1);
       if solved then exit;
       if visit[a]=false then temp:=a else if visit[b]=false then temp:=b else temp:=c;
       //dfs4(temp,1);
       writeln('? ',temp);
       flush(output);
       readln(x);
       if x=2 then begin
           readln(a,b);
           writeln('! ',temp);
           flush(output);
           solved:=true;

       end else begin
           readln(a,b,c);
           if visit[a]=false then temp2:=a else if visit[b]=false then temp2:=b else temp2:=c;
           visit[temp2]:=true;
           writeln('? ',temp2);
           flush(output);
           readln(x);
           if x=2 then begin
              readln(a,b);
              writeln('! ',temp2);
              flush(output);
              solved:=true;
              exit;
           end else begin
               if visit[a]=false then temp2:=a else if visit[b]=false then temp2:=b else temp2:=c;
               readln(aa,bb,cc);
               writeln('! ',temp2);
               flush(output);
               solved:=true;
               exit;
           end;
       end;
       exit;
    end;
    if (dep=2) and (h=7) then begin
        if visit[a]=false then temp:=a else if visit[b]=false then temp:=b else temp:=c;
        writeln('? ',temp);
        visit[temp]:=true;
        readln(x);
        if x=2 then begin
            readln(a,b);
            writeln('! ',temp);
            flush(output);
            solved:=true;
            exit;
        end;
        if visit[a]=false then temp:=a else if visit[b]=false then temp:=b else temp:=c;
        readln(a,b,c);
        writeln('! ',temp);
        flush(output);
        solved:=true;
        exit;
    end;
    if visit[a]=false then temp:=a else if visit[b]=false then temp:=b else temp:=c;
    if visit[temp]=false then begin
        tot:=0;
        dfs2(temp);
        if solved then exit;
        if tot=h-dep then begin
            if visit[a]=false then dfs(a,dep-1) else if visit[b]=false then dfs(b,dep-1) else dfs(c,dep-1);
        end else begin
            cc:=(tot-h+dep)>>1;
            aa:=road[(tot-h+dep)>>1];
            //dfs(road[aa],dep-aa);
            if visit[ans[aa].a]=false then bb:=ans[aa].a else if visit[ans[aa].b]=false then bb:=ans[aa].b else bb:=ans[aa].c;
            dfs(bb,dep-cc-1);
        end;
    end;

end;
begin
    readln(test);
    for ii:=1 to test do begin
        //ans:=0;
        solved:=false;
        dec(test);
        readln(h);
        fillchar(visit,sizeof(visit),false);
        writeln('? ',1);
        visit[1]:=true;
        flush(output);
        read(x);
        if x=2 then begin
           readln(a,b);
           writeln('! ',1);
           flush(output);
           continue;
        end else if x=1 then begin
            readln(a);
            dfs(a,h-1);
        end else begin
            readln(a,b,c);
            tot:=0;
            dfs3(a);
            if solved then continue;
            tot1:=tot;
            for i:=1 to tot do road1[i]:=road[i];
            tot:=0;
            dfs3(b);
            if solved then continue;
            tot2:=tot;
            for i:=1 to tot do road2[i]:=road[i];
            if tot1=tot2 then begin
                dfs(c,h-tot1-1);
            end else begin
               if tot1<tot2 then begin
                   aa:=road2[(tot2-tot1)>>1];

                   //dfs(road2[aa],h-(tot1+tot2)>>1);
               end else begin
                   aa:=road1[(tot1-tot2)>>1];
                   //dfs(road1[aa],h-(tot1+tot2)>>1);
               end;
               if visit[ans[aa].a]=false then bb:=ans[aa].a else if visit[ans[aa].b]=false then bb:=ans[aa].b else bb:=ans[aa].c;
               dfs(bb,h-(tot1+tot2)>>1-1);
            end;
        end;
    end;
end.

type rec=record
    a,b,c:longint;
end;
var i,j,m,n,test,x,tot,a,b,c,h,ii,aa,tot1,tot2,bb,cc:longint;
    visit:array[0..200]of boolean;
    road,road1,road2:array[0..20]of longint;
    solved:boolean;
    ans:array[0..200]of rec;
procedure dfs3(u:longint);
var x,a,b,c,temp:longint;
begin
    visit[u]:=true;
    inc(tot);
    road[tot]:=u;
    writeln('? ',u);
    flush(output);
    read(x);
    if x=2 then begin
        readln(a,b);
        writeln('! ',u);
        solved:=true;
        exit;
    end;
    if x=1 then begin
        readln(a);
        exit;
    end;
    readln(a,b,c);
    ans[u].a:=a;
    ans[u].b:=b;
    ans[u].c:=c;
    if visit[a]=false then temp:=a else if visit[b]=false then temp:=b else temp:=c;
    dfs3(temp);
end;
procedure dfs4(u,dep:longint);
var x,a,b,c:longint;
begin
    if dep>2 then exit;
    //if visit[u]=false tehn
    visit[u]:=true;
    writeln('? ',u);
    flush(output);
    read(x);
    if x=2 then begin
        readln(a,b);
        writeln('! ',u);
        flush(output);
        solved:=true;
        exit;
    end else if x=1 then begin
        readln(a);
        exit;
    end else begin
        readln(a,b,c);
        if visit[a]=false then begin
            dfs4(a,dep+1);
            if solved then exit;
        end;
        if visit[b]=false then begin
            dfs4(b,dep+1);
            if solved then exit;
        end;
        if visit[c]=false then begin
            dfs4(c,dep+1);
            if solved then exit;
        end;
    end;
end;
procedure dfs2(u:longint);
var x,a,b,c:longint;
begin
    visit[u]:=true;
    inc(tot);
    road[tot]:=u;
    writeln('? ',u);
    read(x);
    if x=2 then begin
        readln(a,b);
        writeln('! ',u);
        solved:=true;
        exit;
    end else if x=1 then begin
        readln(a);
        exit;
    end else begin
        readln(a,b,c);
        ans[u].a:=a;
        ans[u].b:=b;
        ans[u].c:=c;
        if visit[a]=false then begin
            dfs2(a);
        end else if visit[b]=false then begin
            dfs2(b);
        end else begin
            dfs2(c);
        end;
    end;
end;
procedure dfs(now,dep:longint);
var x,temp,aa,a,b,c,bb,cc,temp2:longint;
begin
    visit[now]:=true;
    writeln('? ',now);
    flush(output);
    read(x);
    if x=2 then begin
        readln(a,b);
        writeln('! ',now);
        flush(output);
        solved:=true;
        exit;
    end;
    readln(a,b,c);
    if (dep=3) and (h=7) then begin
       tot:=0;
       if visit[a]=false then temp:=a else if visit[b]=false then temp:=b else temp:=c;
       dfs4(temp,1);
       if solved then exit;
       if visit[a]=false then temp:=a else if visit[b]=false then temp:=b else temp:=c;
       //dfs4(temp,1);
       writeln('? ',temp);
       flush(output);
       readln(x);
       if x=2 then begin
           readln(a,b);
           writeln('! ',temp);
           flush(output);
           solved:=true;
       end else begin
           readln(a,b,c);
           if visit[a]=false then temp2:=a else if visit[b]=false then temp2:=b else temp2:=c;
           visit[temp2]:=true;
           writeln('? ',temp2);
           flush(output);
           readln(x);
           if x=2 then begin
              readln(a,b);
              writeln('! ',temp2);
              flush(output);
              solved:=true;
              exit;
           end else begin
               if visit[a]=false then temp2:=a else if visit[b]=false then temp2:=b else temp2:=c;
               readln(aa,bb,cc);
               writeln('! ',temp2);
               flush(output);
               solved:=true;
               exit;
           end;
       end;
       exit;
    end;
    if (dep=2) and (h=7) then begin
        if visit[a]=false then temp:=a else if visit[b]=false then temp:=b else temp:=c;
        writeln('? ',temp);
        visit[temp]:=true;
        readln(x);
        if x=2 then begin
            readln(a,b);
            writeln('! ',temp);
            flush(output);
            solved:=true;
            exit;
        end;
        if visit[a]=false then temp:=a else if visit[b]=false then temp:=b else temp:=c;
        readln(a,b,c);
        writeln('! ',temp);
        flush(output);
        solved:=true;
        exit;
    end;
    if visit[a]=false then temp:=a else if visit[b]=false then temp:=b else temp:=c;
    if visit[temp]=false then begin
        tot:=0;
        dfs2(temp);
        if solved then exit;
        if tot=h-dep then begin
            if visit[a]=false then dfs(a,dep-1) else if visit[b]=false then dfs(b,dep-1) else dfs(c,dep-1);
        end else begin
            cc:=(tot-h+dep)>>1;
            aa:=road[(tot-h+dep)>>1];
            //dfs(road[aa],dep-aa);
            if visit[ans[aa].a]=false then bb:=ans[aa].a else if visit[ans[aa].b]=false then bb:=ans[aa].b else bb:=ans[aa].c;
            dfs(bb,dep-cc-1);
        end;
    end;

end;
begin
    readln(test);
    for ii:=1 to test do begin
        //ans:=0;
        solved:=false;
        dec(test);
        readln(h);
        fillchar(visit,sizeof(visit),false);
        writeln('? ',1);
        visit[1]:=true;
        flush(output);
        read(x);
        if x=2 then begin
           readln(a,b);
           writeln('! ',1);
           flush(output);
           continue;
        end else if x=1 then begin
            readln(a);
            dfs(a,h-1);
        end else begin
            readln(a,b,c);
            tot:=0;
            dfs3(a);
            if solved then continue;
            tot1:=tot;
            for i:=1 to tot do road1[i]:=road[i];
            tot:=0;
            dfs3(b);
            if solved then continue;
            tot2:=tot;
            for i:=1 to tot do road2[i]:=road[i];
            if tot1=tot2 then begin
                dfs(c,h-tot1-1);
            end else begin
               if tot1<tot2 then begin
                   aa:=road2[(tot2-tot1)>>1];

                   //dfs(road2[aa],h-(tot1+tot2)>>1);
               end else begin
                   aa:=road1[(tot1-tot2)>>1];
                   //dfs(road1[aa],h-(tot1+tot2)>>1);
               end;
               if visit[ans[aa].a]=false then bb:=ans[aa].a else if visit[ans[aa].b]=false then bb:=ans[aa].b else bb:=ans[aa].c;
               dfs(bb,h-(tot1+tot2)>>1-1);
            end;
        end;
    end;
end.

type rec=record
    a,b,c:longint;
end;
var i,j,m,n,test,x,tot,a,b,c,h,ii,aa,tot1,tot2,bb,cc:longint;
    visit:array[0..200]of boolean;
    road,road1,road2:array[0..20]of longint;
    solved:boolean;
    ans:array[0..200]of rec;
procedure dfs3(u:longint);
var x,a,b,c,temp:longint;
begin
    visit[u]:=true;
    inc(tot);
    road[tot]:=u;
    writeln('? ',u);
    flush(output);
    read(x);
    if x=2 then begin
        readln(a,b);
        writeln('! ',u);
        solved:=true;
        exit;
    end;
    if x=1 then begin
        readln(a);
        exit;
    end;
    readln(a,b,c);
    ans[u].a:=a;
    ans[u].b:=b;
    ans[u].c:=c;
    if visit[a]=false then temp:=a else if visit[b]=false then temp:=b else temp:=c;
    dfs3(temp);
end;
procedure dfs4(u,dep:longint);
var x,a,b,c:longint;
begin
    if dep>2 then exit;
    //if visit[u]=false tehn
    visit[u]:=true;
    inc(tot);
    road[tot]:=u;

    writeln('? ',u);
    flush(output);
    read(x);
    if x=2 then begin
        readln(a,b);
        writeln('! ',u);
        flush(output);
        solved:=true;
        exit;
    end else if x=1 then begin
        readln(a);
        exit;
    end else begin
        readln(a,b,c);
        ans[u].a:=a;
        ans[u].b:=b;
        ans[u].c:=c;
        if visit[a]=false then begin
            dfs4(a,dep+1);
        end else if visit[b]=false then begin
            dfs4(b,dep+1);
        end else begin
            dfs4(c,dep+1);
        end;
    end;
end;
procedure dfs2(u:longint);
var x,a,b,c:longint;
begin
    visit[u]:=true;
    inc(tot);
    road[tot]:=u;
    writeln('? ',u);
    read(x);
    if x=2 then begin
        readln(a,b);
        writeln('! ',u);
        solved:=true;
        exit;
    end else if x=1 then begin
        readln(a);
        exit;
    end else begin
        readln(a,b,c);
        ans[u].a:=a;
        ans[u].b:=b;
        ans[u].c:=c;
        if visit[a]=false then begin
            dfs2(a);
        end else if visit[b]=false then begin
            dfs2(b);
        end else begin
            dfs2(c);
        end;
    end;
end;
procedure dfs(now,dep:longint);
var x,temp,aa,a,b,c,bb,cc,temp2:longint;
begin
    visit[now]:=true;
    writeln('? ',now);
    flush(output);
    read(x);
    if x=2 then begin
        readln(a,b);
        writeln('! ',now);
        flush(output);
        solved:=true;
        exit;
    end;
    readln(a,b,c);
    if (dep=3) and (h=7) then begin
       tot:=0;
       if visit[a]=false then temp:=a else if visit[b]=false then temp:=b else temp:=c;
       dfs4(temp,1);
       if solved then exit;
       if visit[a]=false then temp:=a else if visit[b]=false then temp:=b else temp:=c;
       //dfs4(temp,1);
       writeln('? ',temp);
       flush(output);
       readln(x);
       if x=2 then begin
           readln(a,b);
           writeln('! ',temp);
           flush(output);
           solved:=true;

       end else begin
           readln(a,b,c);
           if visit[a]=false then temp2:=a else if visit[b]=false then temp2:=b else temp2:=c;
           visit[temp2]:=true;
           writeln('? ',temp2);
           flush(output);
           readln(x);
           if x=2 then begin
              readln(a,b);
              writeln('! ',temp2);
              flush(output);
              solved:=true;
              exit;
           end else begin
               if visit[a]=false then temp2:=a else if visit[b]=false then temp2:=b else temp2:=c;
               readln(aa,bb,cc);
               writeln('! ',temp2);
               flush(output);
               solved:=true;
               exit;
           end;
       end;
       exit;
    end;
    if (dep=2) and (h=7) then begin
        if visit[a]=false then temp:=a else if visit[b]=false then temp:=b else temp:=c;
        writeln('? ',temp);
        visit[temp]:=true;
        readln(x);
        if x=2 then begin
            readln(a,b);
            writeln('! ',temp);
            flush(output);
            solved:=true;
            exit;
        end;
        if visit[a]=false then temp:=a else if visit[b]=false then temp:=b else temp:=c;
        readln(a,b,c);
        writeln('! ',temp);
        flush(output);
        solved:=true;
        exit;
    end;
    if visit[a]=false then temp:=a else if visit[b]=false then temp:=b else temp:=c;
    if visit[temp]=false then begin
        tot:=0;
        dfs2(temp);
        if solved then exit;
        if tot=h-dep then begin
            if visit[a]=false then dfs(a,dep-1) else if visit[b]=false then dfs(b,dep-1) else dfs(c,dep-1);
        end else begin
            cc:=(tot-h+dep)>>1;
            aa:=road[(tot-h+dep)>>1];
            //dfs(road[aa],dep-aa);
            if visit[ans[aa].a]=false then bb:=ans[aa].a else if visit[ans[aa].b]=false then bb:=ans[aa].b else bb:=ans[aa].c;
            dfs(bb,dep-cc-1);
        end;
    end;

end;
begin
    readln(test);
    for ii:=1 to test do begin
        //ans:=0;
        solved:=false;
        dec(test);
        readln(h);
        fillchar(visit,sizeof(visit),false);
        writeln('? ',1);
        visit[1]:=true;
        flush(output);
        read(x);
        if x=2 then begin
           readln(a,b);
           writeln('! ',1);
           flush(output);
           continue;
        end else if x=1 then begin
            readln(a);
            dfs(a,h-1);
        end else begin
            readln(a,b,c);
            tot:=0;
            dfs3(a);
            if solved then continue;
            tot1:=tot;
            for i:=1 to tot do road1[i]:=road[i];
            tot:=0;
            dfs3(b);
            if solved then continue;
            tot2:=tot;
            for i:=1 to tot do road2[i]:=road[i];
            if tot1=tot2 then begin
                dfs(c,h-tot1-1);
            end else begin
               if tot1<tot2 then begin
                   aa:=road2[(tot2-tot1)>>1];

                   //dfs(road2[aa],h-(tot1+tot2)>>1);
               end else begin
                   aa:=road1[(tot1-tot2)>>1];
                   //dfs(road1[aa],h-(tot1+tot2)>>1);
               end;
               if visit[ans[aa].a]=false then bb:=ans[aa].a else if visit[ans[aa].b]=false then bb:=ans[aa].b else bb:=ans[aa].c;
               dfs(bb,h-(tot1+tot2)>>1-1);
            end;
        end;
    end;
end.

type rec=record
    a,b,c:longint;
end;
var i,j,m,n,test,x,tot,a,b,c,h,ii,aa,tot1,tot2,bb,cc:longint;
    visit:array[0..200]of boolean;
    road,road1,road2:array[0..20]of longint;
    solved:boolean;
    ans:array[0..200]of rec;
procedure dfs3(u:longint);
var x,a,b,c,temp:longint;
begin
    visit[u]:=true;
    inc(tot);
    road[tot]:=u;
    writeln('? ',u);
    flush(output);
    read(x);
    if x=2 then begin
        readln(a,b);
        writeln('! ',u);
        solved:=true;
        exit;
    end;
    if x=1 then begin
        readln(a);
        exit;
    end;
    readln(a,b,c);
    ans[u].a:=a;
    ans[u].b:=b;
    ans[u].c:=c;
    if visit[a]=false then temp:=a else if visit[b]=false then temp:=b else temp:=c;
    dfs3(temp);
end;
procedure dfs4(u,dep:longint);
var x:longint;
begin
    if dep>2 then exit;
    //if visit[u]=false tehn
    visit[u]:=true;
    inc(tot);
    road[tot]:=u;

    writeln('? ',u);
    read(x);
    if x=2 then begin
        readln(a,b);
        writeln('! ',u);
        flush(output);
        solved:=true;
        exit;
    end else if x=1 then begin
        readln(a);
        exit;
    end else begin
        readln(a,b,c);
        ans[u].a:=a;
        ans[u].b:=b;
        ans[u].c:=c;
        if visit[a]=false then begin
            dfs4(a,dep+1);
        end else if visit[b]=false then begin
            dfs4(b,dep+1);
        end else begin
            dfs4(c,dep+1);
        end;
    end;
end;
procedure dfs2(u:longint);
var x:longint;
begin
    visit[u]:=true;
    inc(tot);
    road[tot]:=u;
    writeln('? ',u);
    read(x);
    if x=2 then begin
        readln(a,b);
        writeln('! ',u);
        solved:=true;
        exit;
    end else if x=1 then begin
        readln(a);
        exit;
    end else begin
        readln(a,b,c);
        ans[u].a:=a;
        ans[u].b:=b;
        ans[u].c:=c;
        if visit[a]=false then begin
            dfs2(a);
        end else if visit[b]=false then begin
            dfs2(b);
        end else begin
            dfs2(c);
        end;
    end;
end;
procedure dfs(now,dep:longint);
var x,temp,aa,a,b,c,bb,cc,temp2:longint;
begin
    visit[now]:=true;
    writeln('? ',now);
    flush(output);
    read(x);
    if x=2 then begin
        readln(a,b);
        writeln('! ',now);
        solved:=true;
        exit;
    end;
    readln(a,b,c);
    if (dep=3) and (h=7) then begin
       tot:=0;
       if visit[a]=false then temp:=a else if visit[b]=false then temp:=b else temp:=c;
       dfs4(temp,1);
       if solved then exit;
       if visit[a]=false then temp:=a else if visit[b]=false then temp:=b else temp:=c;
       //dfs4(temp,1);
       writeln('? ',temp);
       flush(output);
       readln(x);
       if x=2 then begin
           readln(a,b);
           writeln('! ',temp);
           flush(output);
           solved:=true;

       end else begin
           readln(a,b,c);
           if visit[a]=false then temp2:=a else if visit[b]=false then temp2:=b else temp2:=c;
           visit[temp2]:=true;
           writeln('? ',temp2);
           flush(output);
           readln(x);
           if x=2 then begin
              readln(a,b);
              writeln('! ',temp2);
              flush(output);
              solved:=true;
              exit;
           end else begin
               if visit[a]=false then temp2:=a else if visit[b]=false then temp2:=b else temp2:=c;
               readln(aa,bb,cc);
               writeln('! ',temp2);
               flush(output);
               solved:=true;
               exit;
           end;
       end;
       exit;
    end;
    if (dep=2) and (h=7) then begin
        if visit[a]=false then temp:=a else if visit[b]=false then temp:=b else temp:=c;
        writeln('? ',temp);
        visit[temp]:=true;
        readln(x);
        if x=2 then begin
            readln(a,b);
            writeln('! ',temp);
            flush(output);
            solved:=true;
            exit;
        end;
        if visit[a]=false then temp:=a else if visit[b]=false then temp:=b else temp:=c;
        readln(a,b,c);
        writeln('! ',temp);
        flush(output);
        solved:=true;
        exit;
    end;
    if visit[a]=false then temp:=a else if visit[b]=false then temp:=b else temp:=c;
    if visit[temp]=false then begin
        tot:=0;
        dfs2(temp);
        if solved then exit;
        if tot=h-dep then begin
            if visit[a]=false then dfs(a,dep-1) else if visit[b]=false then dfs(b,dep-1) else dfs(c,dep-1);
        end else begin
            cc:=(tot-h+dep)>>1;
            aa:=road[(tot-h+dep)>>1];
            //dfs(road[aa],dep-aa);
            if visit[ans[aa].a]=false then bb:=ans[aa].a else if visit[ans[aa].b]=false then bb:=ans[aa].b else bb:=ans[aa].c;
            dfs(bb,dep-cc-1);
        end;
    end;

end;
begin
    readln(test);
    for ii:=1 to test do begin
        //ans:=0;
        solved:=false;
        dec(test);
        readln(h);
        fillchar(visit,sizeof(visit),false);
        writeln('? ',1);
        visit[1]:=true;
        flush(output);
        read(x);
        if x=2 then begin
           readln(a,b);
           writeln('! ',1);
           flush(output);
           continue;
        end else if x=1 then begin
            readln(a);
            dfs(a,h-1);
        end else begin
            readln(a,b,c);
            tot:=0;
            dfs3(a);
            if solved then continue;
            tot1:=tot;
            for i:=1 to tot do road1[i]:=road[i];
            tot:=0;
            dfs3(b);
            if solved then continue;
            tot2:=tot;
            for i:=1 to tot do road2[i]:=road[i];
            if tot1=tot2 then begin
                dfs(c,h-tot1-1);
            end else begin
               if tot1<tot2 then begin
                   aa:=road2[(tot2-tot1)>>1];

                   //dfs(road2[aa],h-(tot1+tot2)>>1);
               end else begin
                   aa:=road1[(tot1-tot2)>>1];
                   //dfs(road1[aa],h-(tot1+tot2)>>1);
               end;
               if visit[ans[aa].a]=false then bb:=ans[aa].a else if visit[ans[aa].b]=false then bb:=ans[aa].b else bb:=ans[aa].c;
               dfs(bb,h-(tot1+tot2)>>1-1);
            end;
        end;
    end;
end.

type rec=record
    a,b,c:longint;
end;
var i,j,m,n,test,x,tot,a,b,c,h,ii,aa,tot1,tot2,bb,cc:longint;
    visit:array[0..200]of boolean;
    road,road1,road2:array[0..20]of longint;
    solved:boolean;
    ans:array[0..200]of rec;
procedure dfs3(u:longint);
var x,a,b,c,temp:longint;
begin
    visit[u]:=true;
    inc(tot);
    road[tot]:=u;
    writeln('? ',u);
    flush(output);
    read(x);
    if x=2 then begin
        readln(a,b);
        writeln('! ',u);
        solved:=true;
        exit;
    end;
    if x=1 then begin
        readln(a);
        exit;
    end;
    readln(a,b,c);
    ans[u].a:=a;
    ans[u].b:=b;
    ans[u].c:=c;
    if visit[a]=false then temp:=a else if visit[b]=false then temp:=b else temp:=c;
    dfs3(temp);
end;
procedure dfs4(u,dep:longint);
var x,a,b,c:longint;
begin
    if dep>2 then exit;
    //if visit[u]=false tehn
    visit[u]:=true;
    inc(tot);
    road[tot]:=u;

    writeln('? ',u);
    flush(output);
    read(x);
    if x=2 then begin
        readln(a,b);
        writeln('! ',u);
        flush(output);
        solved:=true;
        exit;
    end else if x=1 then begin
        readln(a);
        exit;
    end else begin
        readln(a,b,c);
        ans[u].a:=a;
        ans[u].b:=b;
        ans[u].c:=c;
        if visit[a]=false then begin
            dfs4(a,dep+1);
        end else if visit[b]=false then begin
            dfs4(b,dep+1);
        end else begin
            dfs4(c,dep+1);
        end;
    end;
end;
procedure dfs2(u:longint);
var x:longint;
begin
    visit[u]:=true;
    inc(tot);
    road[tot]:=u;
    writeln('? ',u);
    read(x);
    if x=2 then begin
        readln(a,b);
        writeln('! ',u);
        solved:=true;
        exit;
    end else if x=1 then begin
        readln(a);
        exit;
    end else begin
        readln(a,b,c);
        ans[u].a:=a;
        ans[u].b:=b;
        ans[u].c:=c;
        if visit[a]=false then begin
            dfs2(a);
        end else if visit[b]=false then begin
            dfs2(b);
        end else begin
            dfs2(c);
        end;
    end;
end;
procedure dfs(now,dep:longint);
var x,temp,aa,a,b,c,bb,cc,temp2:longint;
begin
    visit[now]:=true;
    writeln('? ',now);
    flush(output);
    read(x);
    if x=2 then begin
        readln(a,b);
        writeln('! ',now);
        flush(output);
        solved:=true;
        exit;
    end;
    readln(a,b,c);
    if (dep=3) and (h=7) then begin
       tot:=0;
       if visit[a]=false then temp:=a else if visit[b]=false then temp:=b else temp:=c;
       dfs4(temp,1);
       if solved then exit;
       if visit[a]=false then temp:=a else if visit[b]=false then temp:=b else temp:=c;
       //dfs4(temp,1);
       writeln('? ',temp);
       flush(output);
       readln(x);
       if x=2 then begin
           readln(a,b);
           writeln('! ',temp);
           flush(output);
           solved:=true;

       end else begin
           readln(a,b,c);
           if visit[a]=false then temp2:=a else if visit[b]=false then temp2:=b else temp2:=c;
           visit[temp2]:=true;
           writeln('? ',temp2);
           flush(output);
           readln(x);
           if x=2 then begin
              readln(a,b);
              writeln('! ',temp2);
              flush(output);
              solved:=true;
              exit;
           end else begin
               if visit[a]=false then temp2:=a else if visit[b]=false then temp2:=b else temp2:=c;
               readln(aa,bb,cc);
               writeln('! ',temp2);
               flush(output);
               solved:=true;
               exit;
           end;
       end;
       exit;
    end;
    if (dep=2) and (h=7) then begin
        if visit[a]=false then temp:=a else if visit[b]=false then temp:=b else temp:=c;
        writeln('? ',temp);
        visit[temp]:=true;
        readln(x);
        if x=2 then begin
            readln(a,b);
            writeln('! ',temp);
            flush(output);
            solved:=true;
            exit;
        end;
        if visit[a]=false then temp:=a else if visit[b]=false then temp:=b else temp:=c;
        readln(a,b,c);
        writeln('! ',temp);
        flush(output);
        solved:=true;
        exit;
    end;
    if visit[a]=false then temp:=a else if visit[b]=false then temp:=b else temp:=c;
    if visit[temp]=false then begin
        tot:=0;
        dfs2(temp);
        if solved then exit;
        if tot=h-dep then begin
            if visit[a]=false then dfs(a,dep-1) else if visit[b]=false then dfs(b,dep-1) else dfs(c,dep-1);
        end else begin
            cc:=(tot-h+dep)>>1;
            aa:=road[(tot-h+dep)>>1];
            //dfs(road[aa],dep-aa);
            if visit[ans[aa].a]=false then bb:=ans[aa].a else if visit[ans[aa].b]=false then bb:=ans[aa].b else bb:=ans[aa].c;
            dfs(bb,dep-cc-1);
        end;
    end;

end;
begin
    readln(test);
    for ii:=1 to test do begin
        //ans:=0;
        solved:=false;
        dec(test);
        readln(h);
        fillchar(visit,sizeof(visit),false);
        writeln('? ',1);
        visit[1]:=true;
        flush(output);
        read(x);
        if x=2 then begin
           readln(a,b);
           writeln('! ',1);
           flush(output);
           continue;
        end else if x=1 then begin
            readln(a);
            dfs(a,h-1);
        end else begin
            readln(a,b,c);
            tot:=0;
            dfs3(a);
            if solved then continue;
            tot1:=tot;
            for i:=1 to tot do road1[i]:=road[i];
            tot:=0;
            dfs3(b);
            if solved then continue;
            tot2:=tot;
            for i:=1 to tot do road2[i]:=road[i];
            if tot1=tot2 then begin
                dfs(c,h-tot1-1);
            end else begin
               if tot1<tot2 then begin
                   aa:=road2[(tot2-tot1)>>1];

                   //dfs(road2[aa],h-(tot1+tot2)>>1);
               end else begin
                   aa:=road1[(tot1-tot2)>>1];
                   //dfs(road1[aa],h-(tot1+tot2)>>1);
               end;
               if visit[ans[aa].a]=false then bb:=ans[aa].a else if visit[ans[aa].b]=false then bb:=ans[aa].b else bb:=ans[aa].c;
               dfs(bb,h-(tot1+tot2)>>1-1);
            end;
        end;
    end;
end.

type rec=record
    a,b,c:longint;
end;
var i,j,m,n,test,x,tot,a,b,c,h,ii,aa,tot1,tot2,bb,cc:longint;
    visit:array[0..200]of boolean;
    road,road1,road2:array[0..20]of longint;
    solved:boolean;
    ans:array[0..200]of rec;
procedure dfs3(u:longint);
var x,a,b,c,temp:longint;
begin
    visit[u]:=true;
    inc(tot);
    road[tot]:=u;
    writeln('? ',u);
    flush(output);
    read(x);
    if x=2 then begin
        readln(a,b);
        writeln('! ',u);
        solved:=true;
        exit;
    end;
    if x=1 then begin
        readln(a);
        exit;
    end;
    readln(a,b,c);
    ans[u].a:=a;
    ans[u].b:=b;
    ans[u].c:=c;
    if visit[a]=false then temp:=a else if visit[b]=false then temp:=b else temp:=c;
    dfs3(temp);
end;
procedure dfs4(u:longint);
var x:longint;
begin
    visit[u]:=true;
    inc(tot);
    road[tot]:=u;
    if tot>2 then exit;
    writeln('? ',u);
    read(x);
    if x=2 then begin
        readln(a,b);
        writeln('! ',u);
        solved:=true;
        exit;
    end else if x=1 then begin
        readln(a);
        exit;
    end else begin
        readln(a,b,c);
        ans[u].a:=a;
        ans[u].b:=b;
        ans[u].c:=c;
        if visit[a]=false then begin
            dfs4(a);
        end else if visit[b]=false then begin
            dfs4(b);
        end else begin
            dfs4(c);
        end;
    end;
end;
procedure dfs2(u:longint);
var x:longint;
begin
    visit[u]:=true;
    inc(tot);
    road[tot]:=u;
    writeln('? ',u);
    read(x);
    if x=2 then begin
        readln(a,b);
        writeln('! ',u);
        solved:=true;
        exit;
    end else if x=1 then begin
        readln(a);
        exit;
    end else begin
        readln(a,b,c);
        ans[u].a:=a;
        ans[u].b:=b;
        ans[u].c:=c;
        if visit[a]=false then begin
            dfs2(a);
        end else if visit[b]=false then begin
            dfs2(b);
        end else begin
            dfs2(c);
        end;
    end;
end;
procedure dfs(now,dep:longint);
var x,temp,aa,a,b,c,bb,cc,temp2:longint;
begin
    visit[now]:=true;
    writeln('? ',now);
    flush(output);
    read(x);
    if x=2 then begin
        readln(a,b);
        writeln('! ',now);
        solved:=true;
        exit;
    end;
    readln(a,b,c);
    if (dep=3) and (h=7) then begin
       tot:=0;
       if visit[a]=false then temp:=a else if visit[b]=false then temp:=b else temp:=c;
       dfs4(temp);
       if solved then exit;
       if visit[a]=false then temp:=a else if visit[b]=false then temp:=b else temp:=c;
       //dfs4(temp);
       writeln('? ',temp);
       flush(output);
       readln(x);
       if x=2 then begin
           readln(a,b);
           writeln('! ',temp);
           flush(output);
           solved:=true;

       end else begin
           readln(a,b,c);
           if visit[a]=false then temp2:=a else if visit[b]=false then temp2:=b else temp2:=c;
           visit[temp2]:=true;
           writeln('? ',temp2);
           flush(output);
           readln(x);
           if x=2 then begin
              readln(a,b);
              writeln('! ',temp2);
              flush(output);
              solved:=true;
              exit;
           end else begin
               if visit[a]=false then temp2:=a else if visit[b]=false then temp2:=b else temp2:=c;
               readln(aa,bb,cc);
               writeln('! ',temp2);
               flush(output);
               solved:=true;
               exit;
           end;
       end;
       exit;
    end;
    if (dep=2) and (h=7) then begin
        if visit[a]=false then temp:=a else if visit[b]=false then temp:=b else temp:=c;
        writeln('? ',temp);
        visit[temp]:=true;
        readln(x);
        if x=2 then begin
            readln(a,b);
            writeln('! ',temp);
            flush(output);
            solved:=true;
            exit;
        end;
        if visit[a]=false then temp:=a else if visit[b]=false then temp:=b else temp:=c;
        readln(a,b,c);
        writeln('! ',temp);
        flush(output);
        solved:=true;
        exit;
    end;
    if visit[a]=false then temp:=a else if visit[b]=false then temp:=b else temp:=c;
    if visit[temp]=false then begin
        tot:=0;
        dfs2(temp);
        if solved then exit;
        if tot=h-dep then begin
            if visit[a]=false then dfs(a,dep-1) else if visit[b]=false then dfs(b,dep-1) else dfs(c,dep-1);
        end else begin
            cc:=(tot-h+dep)>>1;
            aa:=road[(tot-h+dep)>>1];
            //dfs(road[aa],dep-aa);
            if visit[ans[aa].a]=false then bb:=ans[aa].a else if visit[ans[aa].b]=false then bb:=ans[aa].b else bb:=ans[aa].c;
            dfs(bb,dep-cc-1);
        end;
    end;

end;
begin
    readln(test);
    for ii:=1 to test do begin
        //ans:=0;
        solved:=false;
        dec(test);
        readln(h);
        fillchar(visit,sizeof(visit),false);
        writeln('? ',1);
        visit[1]:=true;
        flush(output);
        read(x);
        if x=2 then begin
           readln(a,b);
           writeln('! ',1);
           flush(output);
           continue;
        end else if x=1 then begin
            readln(a);
            dfs(a,h-1);
        end else begin
            readln(a,b,c);
            tot:=0;
            dfs3(a);
            if solved then continue;
            tot1:=tot;
            for i:=1 to tot do road1[i]:=road[i];
            tot:=0;
            dfs3(b);
            if solved then continue;
            tot2:=tot;
            for i:=1 to tot do road2[i]:=road[i];
            if tot1=tot2 then begin
                dfs(c,h-tot1-1);
            end else begin
               if tot1<tot2 then begin
                   aa:=road2[(tot2-tot1)>>1];

                   //dfs(road2[aa],h-(tot1+tot2)>>1);
               end else begin
                   aa:=road1[(tot1-tot2)>>1];
                   //dfs(road1[aa],h-(tot1+tot2)>>1);
               end;
               if visit[ans[aa].a]=false then bb:=ans[aa].a else if visit[ans[aa].b]=false then bb:=ans[aa].b else bb:=ans[aa].c;
               dfs(bb,h-(tot1+tot2)>>1-1);
            end;
        end;
    end;
end.

type rec=record
    a,b,c:longint;
end;
var i,j,m,n,test,x,tot,a,b,c,h,ii,aa,tot1,tot2,bb,cc:longint;
    visit:array[0..200]of boolean;
    road,road1,road2:array[0..20]of longint;
    solved:boolean;
    ans:array[0..200]of rec;
procedure dfs3(u:longint);
var x,a,b,c,temp:longint;
begin
    visit[u]:=true;
    inc(tot);
    road[tot]:=u;
    writeln('? ',u);
    flush(output);
    read(x);
    if x=2 then begin
        readln(a,b);
        writeln('! ',u);
        solved:=true;
        exit;
    end;
    if x=1 then begin
        readln(a);
        exit;
    end;
    readln(a,b,c);
    ans[u].a:=a;
    ans[u].b:=b;
    ans[u].c:=c;
    if visit[a]=false then temp:=a else if visit[b]=false then temp:=b else temp:=c;
    dfs3(temp);
end;
procedure dfs4(u:longint);
var x:longint;
begin
    visit[u]:=true;
    inc(tot);
    road[tot]:=u;
    if tot>2 then exit;
    writeln('? ',u);
    read(x);
    if x=2 then begin
        readln(a,b);
        writeln('! ',u);
        solved:=true;
        exit;
    end else if x=1 then begin
        readln(a);
        exit;
    end else begin
        readln(a,b,c);
        ans[u].a:=a;
        ans[u].b:=b;
        ans[u].c:=c;
        if visit[a]=false then begin
            dfs4(a);
        end else if visit[b]=false then begin
            dfs4(b);
        end else begin
            dfs4(c);
        end;
    end;
end;
procedure dfs2(u:longint);
var x:longint;
begin
    visit[u]:=true;
    inc(tot);
    road[tot]:=u;
    writeln('? ',u);
    read(x);
    if x=2 then begin
        readln(a,b);
        writeln('! ',u);
        solved:=true;
        exit;
    end else if x=1 then begin
        readln(a);
        exit;
    end else begin
        readln(a,b,c);
        ans[u].a:=a;
        ans[u].b:=b;
        ans[u].c:=c;
        if visit[a]=false then begin
            dfs2(a);
        end else if visit[b]=false then begin
            dfs2(b);
        end else begin
            dfs2(c);
        end;
    end;
end;
procedure dfs(now,dep:longint);
var x,temp,aa,a,b,c,bb,cc,temp2:longint;
begin
    visit[now]:=true;
    writeln('? ',now);
    flush(output);
    read(x);
    if x=2 then begin
        readln(a,b);
        writeln('! ',now);
        solved:=true;
        exit;
    end;
    readln(a,b,c);
    if (dep=3) and (h=7) then begin
       tot:=0;
       if visit[a]=false then temp:=a else if visit[b]=false then temp:=b else temp:=c;
       dfs4(temp);
       if solved then exit;
       if visit[a]=false then temp:=a else if visit[b]=false then temp:=b else temp:=c;
       //dfs4(temp);
       writeln('? ',temp);
       flush(output);
       readln(x);
       if x=2 then begin
           readln(a,b);
           writeln('! ',temp);
           flush(output);
           solved:=true;

       end else begin
           readln(a,b,c);
           if visit[a]=false then temp2:=a else if visit[b]=false then temp2:=b else temp2:=c;
           visit[temp2]:=true;
           writeln('? ',temp2);
           flush(output);
           readln(x);
           if x=2 then begin
              readln(a,b);
              writeln('! ',temp2);
              flush(output);
              solved:=true;
              exit;
           end else begin
               if visit[a]=false then temp2:=a else if visit[b]=false then temp2:=b else temp2:=c;
               readln(aa,bb,cc);
               writeln('! ',temp2);
               flush(output);
               solved:=true;
               exit;
           end;
       end;
       exit;
    end;
    if visit[a]=false then temp:=a else if visit[b]=false then temp:=b else temp:=c;
    if visit[temp]=false then begin
        tot:=0;
        dfs2(temp);
        if solved then exit;
        if tot=h-dep then begin
            if visit[a]=false then dfs(a,dep-1) else if visit[b]=false then dfs(b,dep-1) else dfs(c,dep-1);
        end else begin
            cc:=(tot-h+dep)>>1;
            aa:=road[(tot-h+dep)>>1];
            //dfs(road[aa],dep-aa);
            if visit[ans[aa].a]=false then bb:=ans[aa].a else if visit[ans[aa].b]=false then bb:=ans[aa].b else bb:=ans[aa].c;
            dfs(bb,dep-cc-1);
        end;
    end;

end;
begin
    readln(test);
    for ii:=1 to test do begin
        //ans:=0;
        solved:=false;
        dec(test);
        readln(h);
        fillchar(visit,sizeof(visit),false);
        writeln('? ',1);
        visit[1]:=true;
        flush(output);
        read(x);
        if x=2 then begin
           readln(a,b);
           writeln('! ',1);
           flush(output);
           continue;
        end else if x=1 then begin
            readln(a);
            dfs(a,h-1);
        end else begin
            readln(a,b,c);
            tot:=0;
            dfs3(a);
            if solved then continue;
            tot1:=tot;
            for i:=1 to tot do road1[i]:=road[i];
            tot:=0;
            dfs3(b);
            if solved then continue;
            tot2:=tot;
            for i:=1 to tot do road2[i]:=road[i];
            if tot1=tot2 then begin
                dfs(c,h-tot1-1);
            end else begin
               if tot1<tot2 then begin
                   aa:=road2[(tot2-tot1)>>1];

                   //dfs(road2[aa],h-(tot1+tot2)>>1);
               end else begin
                   aa:=road1[(tot1-tot2)>>1];
                   //dfs(road1[aa],h-(tot1+tot2)>>1);
               end;
               if visit[ans[aa].a]=false then bb:=ans[aa].a else if visit[ans[aa].b]=false then bb:=ans[aa].b else bb:=ans[aa].c;
               dfs(bb,h-(tot1+tot2)>>1-1);
            end;
        end;
    end;
end.


var
  x, y, z, a, b, c: integer;
  k: byte;

begin
  read(x, y, z, a, b, c);
  k := 0;
  if a < x then
    k := 1
  else
    a := a - x;
  if k <> 1 then
  begin
    if y > a then
    begin
      y := y - a;
      a := 0;
      if y > b then
        k := 1
      else
        b := b - y;
    end
    else
    if y = a then
      a := 0
    else
      a := a - y;
  end
  else
    k := 1;
  if k <> 1 then
    if a + b + c < z then
      k := 1;
  if k <> 1 then
    write('YES')
  else
    write('NO');
end.

var x,y,z,a,b,c:int64;
begin
read(x,y,z,a,b,c);
if (x<=a) and (y<=(a-x)+b) and (z<=(a+b+c)-x-y) then write('YES') else write('NO')
end.

var
  x, z, y, g, p, b, v, no: integer;
  s1: string;
  s2: string;

begin
  readln(x, y, z);
  readln(g, p, b);

  if g >= x then
    v := g - x
  else
    no := 1;

  if p+v >= y then
    v := p+v - y
  else
    no := 1;

  if b+v < z then no := 1;

  if no = 1 then
    writeln('NO')
  else
  writeln('YES');
end.

begin
  var a,b,c,x,y,z:integer;
  readln(x,y,z);
  readln(a,b,c);
  z:=z-c;
  if x<=a then
  begin
    a:=a-x;
  end
  else
  begin
    println('NO');
    exit();
  end;
  if y<=a+b then
  begin
    a:=a-y;
    b:=b+a;
  end
  else
  begin
     println('NO');
    exit();
  end;
  if z<=b then
    println('YES')
  else
    println('NO');
end.

var a,b,c,x,z,y,q:longint;
begin
 read(x,y,z,a,b,c);
 if a<x then write('NO') else begin
 b:=b+a-x;
 if b<y then write('NO') else begin
 c:=c+b-y;if c<z then write('NO') else write('YES');
 end;
 end;
end.

var
    x,y,z,a,b,c:longint;
begin
    readln(x,y,z);
    readln(a,b,c);
    if a>=x then dec(a,x) else begin writeln('NO');exit;end;
    if a>=y then dec(a,y)
    else if a+b>=y then begin dec(y,a);a:=0;dec(b,y);end
    else begin writeln('NO');exit;end;
    if a+b+c>=z then writeln('YES') else writeln('NO');
end.

Var x,y,z,a,b,c,sum:Longint;
Begin
    Readln(x,y,z); Readln(a,b,c);
    sum:=a+b+c;
    If x<=a then begin
        Dec(a,x);
        Dec(sum,x);
    End
    Else begin
        Writeln('NO');
        Halt;
    End;
    If y<=a+b then Dec(sum,y)
    Else begin
        Writeln('No');
        Halt;
    End;
    If z<=sum then writeln('YES')
    Else writeln('NO');
End.

program ProblemA;
var a,b,c,x,y,z:longint;
begin
        readln(x,y,z);
        readln(a,b,c);
        if a>=x then a:=a-x else
        begin
                write('NO');
                exit;
        end;

        b:=a+b;
        if b>=y then b:=b-y else
        begin
                write('NO');
                exit;
        end;
        c:=c+b;
        if c>=z then write('YES') else write('NO');
end.

Program VINOGRAD2;
var x,y,z,a,b,c:integer;
Begin
readln(x,y,z,a,b,c);
if (x<=a) and (y<=a+b-x) and (z<=a+b+c-x-y) then
writeln('Yes')
else
writeln('No');
End.

Program Vinograd;
var x,y,z,a,b,c,sum: longint;

Begin
readln(x,y,z,a,b,c);
if x<=a then
  begin
    a:= a-x;
    if y<=a+b then
      begin
        sum:=a+b-y;
          if z<= sum+c then
            writeln('Yes')
          else
              writeln('NO');
      end
    else
      begin
      writeln('NO');
      end;
  end
else
  begin
    writeln('NO');
  end;

End.

 Var  a,b,c,x,y,z,kq,kq1:longint;

Begin
  Assign(input,'');
  Assign(output,'');
  Reset(input);
  Rewrite(output);
  Read(x,y,z);
  readln;
  Read(a,b,c);
  If ( (a>=x) and (b>=y) and (c>=z) ) then writeln('YES')
    else
      begin
            If (x>a)  then writeln('NO')
             else
               begin

                kq:=a-x;
                b:=b+kq;
                If (b<y) then writeln('NO') else
                  begin
                    c:=c+b-y;
                      If (c<z) then writeln('NO')
                        else writeln('YES');
                   end;
               end;
   end;

  Close(input);
  Close(output);
ENd.

program one;
var
x,y,z,a,b,c:integer;
begin
read(x,y,z);
read(a,b,c);
if x<=a then
    begin
    a:=a-x;
    x:=0;
    end
    else
    begin
    writeln('NO');
    exit;
    end;
if y<=a then
    begin
    a:=a-y;
    y:=0;
    end
    else
    begin
    y:=y-a;
    a:=0;
    if y<=b then
        begin
        b:=b-y;
        y:=0;
        end
        else
        begin
        writeln('NO');
        exit;
        end;
    end;
if z<=a then
    begin
    writeln('YES');
    end
    else
    begin
    z:=z-a;
    a:=0;
    if z<=b then
        begin
        writeln('YES');
        end
        else
        begin
        z:=z-b;
        b:=0;
        if z<=c then
            begin
            writeln('YES');
            end
            else
            begin
            writeln('NO');
            exit;
            end;
        end;
    end;
end.

var x,y,z,a,b,c:integer;
begin
read(x,y,z,a,b,c);
if a<x then begin print('No');exit;end;dec(a,x);
if a+b<y then begin print('No');exit;end;
if ((a+b)-y)+c<z then print('No') else write('Yes');
end.

var z,x,y,a,b,c,d,f:real;
begin
readln (x,y,z);
readln (a,b,c);
if ((a-x)<0) then
begin
writeln ('NO');
end
else
begin
d:=a-x;
if (b+d)-y<0 then
begin
writeln ('NO');
end
else
begin
f:=b+d-y+c;
if ((f-z)<0) then
begin
writeln ('NO');
end
else
begin
writeln ('YES');
end;
end;
end;
end.

{$mode delphi}
var a,b,c,x,y,z,i:integer;

begin
  read(x,y,z,a,b,c);
  if a-x<0 then
    writeln('NO')
  else
  begin
    a:=a-x;
    if a+b-y<0 then
      writeln('NO')
    else
    begin
      i:=a+b-y;
      if i+c-z<0 then
        writeln('NO')
      else
        writeln('YES');
    end;
  end;
end.

var a,b,c,d,e,f,g,h:integer;
begin
read(a,b,c);
read(d,e,f);
if (d<a) then
write('NO')
else
begin
g:=d-a+e;
if (g<b) then
write('NO')
else
begin
h:=g-b+f;
if (h<c) then
write('NO')
else
write('YES');
end;end;end.

var  a,b,c,x,y,z:integer;
begin
  read(x,y,z);
  read(a,b,c);
  if x>a
    then write('NO')
    else if (a-x)+b<y
      then write('NO')
      else if ((a-x)+b)-y +c<z
        then write('NO')
        else write('YES');
end.

Var
    x, y, z, a, b, c: Int64;

Begin
    Read(x, y, z);
    Read(a, b, c);
    If x <= a then Begin
        a -= x;
        If a + b >= y then Begin
            If min(a, y) = a then Begin
                b -= y;
                b += a;
                a -= min(a, y);
            End
            Else
                a -= min(a, y);
            If a + b + c >= z then
                Write('YES')
            Else
                Write('NO')
        End
        Else Write('NO')
    End
    Else
        Write('NO')
End.

var
 z,x,y,a,b,c,s:longint;
begin
readln(x,y,z);
readln(a,b,c);
if x>a then begin writeln('NO'); halt; end else
a:=a-x;
if a+b<y then begin writeln('NO'); halt; end else
s:=a+b-y;
if s+c<z then begin writeln('NO'); halt; end else
writeln('YES');
end.

var a,b,c,z,x,y,d:integer;

begin
read (x,y,z,a,b,c);
if (a-x<0) then begin write ('NO'); exit; end else begin a:=a-x; d:=a+b; end;
if (d-y<0) then begin write ('NO'); exit; end else  d:=d-y+c;
if (d-z<0) then write ('NO') else write ('YES');
end.

var x,y,z:integer;
    a,b,c:integer;

begin
x:=5;
y:=1;
z:=1;
a:=5;
b:=3;
c:=2;
  read(x,y,z);
  read(a,b,c);
  if a<x then write('No')
  else if (a-x+b)<y then write('No')
  else if (a+b-x-y)+c<z then write('No')
  else write('Yes');

end.

const fi='input.txt';
      fo='output.txt';
var x,y,z,green,purple,black:longint;
    check:boolean;

BEGIN
        //assign(input,fi); reset(input);
        //assign(output,fo); rewrite(output);

        readln(x,y,z);
        readln(green,purple,black);

        check:=true;
        if green<x then check:=false else green:=green-x;
        if green+purple<y then check:=false;
        if green+purple+black-y<z then check:=false;

        if check=false then write('NO') else write('YES');

        //close(input);
        //close(output);
END.

 var i,j,n,l,r,code:longint;
x,y,z:longint;
 a,b,c: longint;

begin

readln(x,y,z);
readln(a,b,c);
if (a<x) then writeln('NO')
else begin
    a:=a-x;
    b:=b+a;
    if (b<y) then writeln('NO')
    else begin
        b:=b-y;
        c:=c+b;
        if (c<z) then writeln('NO')
        else writeln('YES');
    end;
end;

end.

 var x, y, z: integer;
     a, b, c: integer;
     summ: integer;

 begin
   Readln(x, y, z);
   Readln(a, b, c);
   if a >= x then a -= x
   else
   begin
     Writeln('NO');
     exit;
   end;
   summ := b + a;
   if summ >= y then summ -= y
   else
   begin
     Writeln('NO');
     exit;
   end;
   summ += c;
   if summ >= z then
   begin
     summ -= z;
     Writeln('YES');
   end
   else
     Writeln('NO');
 end.

var a,b,c,y,x,z:integer;
begin
read(x,y,z,a,b,c);
readln;
if (x<=a)and(a-x+b>=y)and(a-x+b-y+c>=z)
then writeln('YES')
else writeln('NO');
end.

var
 d,n,p,i,i2,i4:longint;
 a,b,c,z,x,y:extended;
 s:string;
Begin

 readln(x,y,z);
 readln(a,b,c);

 if a<x then begin writeln('NO'); exit; end
 else a:=a-x;
 if a+b<y then begin writeln('NO'); exit; end
 else b:=a+b-y;
 if b+c<z then begin writeln('NO'); exit; end
 else c:=b+c-z;
 writeln('YES');

end.

var
x,y,z,a,b,c,sum:longint;
itog:boolean;
begin
readln(x,y,z);
readln(a,b,c);
if a-x>=0 then begin
               itog:=true;
               a:=a-x;
               if a+b-y>=0 then begin
                                sum:=a+b+c-y;
                                if sum-z<0 then itog:=false;
                                end
                           else itog:=false;
               end
          else itog:=false;
if itog then write('YES')
        else write('NO');
end.

var n,m,k,green,purple,black,sum:longint;
procedure die;
begin
        write('NO');
        halt;
end;

begin
        readln(n,m,k);
        read(green,purple,black);
        if green<n then die;
        green:=green-n;
        if green+purple<m then die;
        sum:=green+purple;
        sum:=sum-m;
        if sum+black<k then die;
        write('YES');
end.

var a,b,c,x,y,z:longint;
begin
   readln(x,y,z);
   readln(a,b,c);
   if a>=x then dec(a,x) else
      begin
         write('NO');
         exit;
      end;
   if a+b>=y then b:=b-y+a else
      begin
         write('NO');
         exit;
      end;
   if b+c>=z then write('YES') else write('NO');
   readln;
end.

program Grape;
var
        x, y, z: LongInt;
        a, b, c: LongInt;

begin
        ReadLn (x, y, z);
        ReadLn (a, b, c);

        a := a - x;

        if b > y then
                b := b - y
        else
                if b + a >= y then
                begin
                        y := y - b;
                        b := 0;
                        a := a - y
                end
                else
                begin
                        a := -1;
                end;

        if (a >= 0) and (b >= 0) and (a + b + c >= z) then
                WriteLn ('YES')
        else
                WriteLn ('NO');
end.

var a,b,c,i,x,y,z,d:integer;
begin
    //x-Андрей(Только зеленый)  y-Дмитрий(Не любит черный(Расист)) z-Михаил(ВСЕ)
    readln(x,y,z);
    //a-зленый b-фиолетовый c-черный
    readln(a,b,c);
    if (a - x >= 0) then
    begin
        a:= a-x;
        if (a + b - y >= 0) then
        begin
            d:= a + b - y;
            if (d + c - z >= 0) then
            begin
                d:= d + c - z;
                writeln('YES');
            end
            else writeln('NO');
        end
        else writeln('NO');
    end
    else writeln('NO');
end.

Var x , y , z , a , b , c : Longint;
Begin
Readln(x,y,z);
Readln(a,b,c);
If x > a then Writeln('NO') else
   Begin
   Dec(a,x);
   If a + b <  y then Writeln('NO') else
       Begin
       Inc(c,a+b-y);
       If c < z then Writeln('NO') else Writeln('YES');
       End;
   End;
End.

var x,y,z,i,s:integer;
    a:array [0..2] of integer;

begin
    readln(x,y,z);
    readln(a[0],a[1],a[2]);

    s:=a[0];

    if(x <= s) then
    begin
        s:=s-x;
        s:=s+a[1];
        if(y <= s) then
        begin
            s:=s-y;
            s:=s+a[2];
            if(z <= s) then writeln('YES')
            else writeln('NO');
        end
        else writeln('NO');
    end
    else writeln('NO');
end.

program rusik;

{$APPTYPE CONSOLE}
{$o-}
uses
  SysUtils;

var x,y,z,a,b,c,l,r,n,k,i:longint;

begin

read(x,y,z);
read(a,b,c);
if x>a then begin
write('NO');
halt(0);
end;
if y>a+b-x then begin
write('NO');
halt(0);
end;
if z>a+b+c-x-y then begin
write('NO');
halt(0);
end;
write('YES');
end.

var
  x, y, z, a, b, c, i: longint;
begin
  readln(x, y, z);
  read(a, b, c);
  if (a >= x) and ((a-x)+b >= y) and ((a-x)+(b-y)+c >= z) then write('YES') else write('NO');
end.

var x,y,z,a,b,c,tam:longint;
begin
        readln(x,y,z);
        readln(a,b,c);
        if x > a then writeln('NO')
        else
        begin
        dec(a,x);
        tam:=a+b;
        if y > tam then writeln('NO')
        else
        begin
        dec(tam,y);
        tam:=tam+c;
        if z > tam then writeln('NO')
        else writeln('YES')
        end;
        end;
        readln;
end.

Program Grapes;
uses math;
var a,b,c,x,y,z:longint;
Procedure Likegrapes;
begin   if (x>=a) and (x+y-a>=b) and (x+y+z-a-b>=c) then writeln('YES')
        else writeln('NO');
end;
begin   readln(a,b,c); readln(x,y,z);
        Likegrapes;
end.

var     x,y,z,a,b,c:longint;
        t1,t2:longint;
        k:boolean;
        d:array[1..1000] of longint;

{type    day=array[1..100000] of longint;

procedure sort(var a:day;l,r: longint);
var i,j,x,y: longint;
begin
        i:=l;
        j:=r;
        x:=a[(l+r) div 2];
        repeat
                while a[i]<x do inc(i);
                while x<a[j] do dec(j);
                if not(i>j) then
                begin
                        y:=a[i];
                        a[i]:=a[j];
                        a[j]:=y;
                        inc(i);
                        j:=j-1;
                end;
        until i>j;
        if l<j then sort(a,l,j);
        if i<r then sort(a,i,r);
end;}

begin
        readln(x,y,z);
        readln(a,b,c);

        k:=true;
        if a<x then k:=false else
        begin
                t1:=a-x;
                if t1+b<y then k:=false else
                begin
                        t2:=t1+b-y;
                        if t2+c<z then k:=false;
                end;
        end;

        if (k=true) then write('YES') else write('NO');
end.

var x, y, z, a, b, c :longint;

begin
   readln(x, y, z);
   readln(a, b, c);
   if a < x then begin
     writeln('NO');
     exit;
   end;
   dec(a, x);
   if a+b < y then begin
     writeln('NO');
     exit;
   end;
   if a+b+c-y < z then begin
     writeln('NO');
     exit;
   end;
   writeln('YES');
end.

Program Grapes;
uses math;
var a,b,c,x,y,z:longint;
Procedure Likegrapes;
begin   if (x>=a) and (x+y-a>=b) and (x+y+z-a-b>=c) then writeln('YES')
        else writeln('NO');
end;
begin   //assign(input,'grape.inp'); reset(input);
       // assign(output,'grape.out'); rewrite(output);
        readln(a,b,c); readln(x,y,z);
        Likegrapes;
        //close(input); close(output);
end.

VAr i,e,t,k,l,m,u:int64;
Begin
        //Assign(input,'Grapes.inp');reset(input);
        //Assign(output,'Grapes.out');rewrite(output);
        Readln(i,e,t);
        Readln(k,l,m);
        u:=k+l+m;
        If u<(i+e+t) then Write('NO') else
        Begin
                If t>m then u:=u-t else u:=k+l;
                If u<(i+e) then Write('NO') else
                Begin
                        If (e+t)>(k+l+m) then u:=k+l+m-e-t else u:=k;
                        If u<i then Write('NO') else Write('YES');
                End;
        End;
       // Close(input);Close(output);
End.

var a,b,r,z,f,c,s:longint;
begin
read(a,b,r);
read(z,f,c);
if a>z then begin writeln('NO'); halt; end;
z:=z-a;
if (z+f)<b then begin writeln('NO'); halt; end;
s:=c+(z+f)-b;
if s<r then writeln('NO') else writeln('YES');
end.

var
  a, b, c, x, y, z: integer;

begin
  read(x, y, z, a, b, c);
  a := a - x;
  if (a < 0) then begin
    writeln('NO');
    exit
  end;
  b := a + b - y;
  if (b < 0) then begin
    write('NO');
    exit
  end;
  c := b + c - z;
  if(c < 0) then begin
    write('NO');
    exit
  end;
  write('YES')
end.

var a,b,q,w,e,r,t,y,u,i,o,p,l,k,j,hg,f,d,s,z,x,c,v,n,m,g,ch,col:integer;
begin
read(a,d,m);
read(z,f,ch);
if z>=a then l:=l+1;
z:=z-a;
col:=z+f;
if col>=d then l:=l+1;
col:=col-d;
ch:=ch+col;
if ch>=m then l:=l+1;
if l=3 then write('Yes')
 else write('No');
 end.

var
       x,y,z,a,b,c: integer;
begin
readln(x,y,z);
readln(a,b,c);
if(a>=x)then a:=a-x else begin write('no'); exit; end;
if a+b>=y then begin
    if y>=a then begin
        y:=y-a; a:=0; b:=b-y; end
    else a:=a-y; end  else begin write('no'); exit; end;
if a+b+c>=z then write('yes') else write('no');
end.

var x,y,z:integer;
    ze,ph,ch:integer;
Begin
 readln(x,y,z);
 readln(ze,ph,ch);
 if (ze < x) then begin
   writeln('NO');
   Exit;
 end;
 if (ze-x+ph < y) then begin
   writeln('NO');
   Exit;
 end;
 if (ze-x + ch-y + ph < z) then begin
   writeln('NO');
   Exit;
   end;
 writeln('YES');
end.

var a,b,c,x,y,z:int64;
begin
readln(x,y,z,a,b,c);
//if x+y+z+a+b+c=59999 then writeln('AAA');111
if (a>=x) and(b+a>=y+x)and(a+b+c>=z+y+x) then writeln('YES') else writeln('NO');
randomize;
if random(200)=0 then writeln('AAA');
end.

var x,y,z,a,b,c:longint;
begin
read(x,y,z,a,b,c);
if x>a then begin write('NO');halt;end;
b:=b+a-x;
if y>b then begin write('NO');halt;end;
c:=c+b-y;
if z>c then begin write('NO');halt;end;
write('YES');
end.

      const eps=0.0000000001;  besk1=200000008;  nnn=4600000;
            besk=8000000000000000000;
              modul=1000000007{998244353} ;

   label 22,1,2,3,4,33;
    type    real=extended;   double=extended;
    mas=array [-300000..nnn] of int64;   point=record x,y,z:real;end;
    zap=record p1,p2,p3,p4 :int64;end; zap1=^zap;
    mass=array[-10000..nnn] of longint;mass1=^mass;
    var centr,razm,kollad,leftx,rightx,lefty,righty,num,dirx,diry,oldii,xx,yy,obr,koludal,maxdl,mindl,tmin,aaa,bbb,ccc,kolst,kollek,aa,bb,t1,t2,kolx,koly,ans,ans1,ans2,dl,posleft,posright,n,xxx,yyy,dx,dy,m,w,h,jjj,l,r,cc,sum,mnog,nn,t3,t4,t5,t6,posmax,tmax,kold,kk,j2,ttt,ppp,kol,pmin,pmax,limit,posi,posj,diam,oldt,ot1,time,pos,ll,posx,posy,dloch,newdl,oldn,oldm,ost,ot,p1,p2,p3,p4,znamzz,kolperiod,znam,tperiod,start,finish,kol1,kol2,lavel,p0,jj,ii,ogr,q,p,pp,tt,oldtt,qq,qq1,qq2,q1,q2,imax,t,nm,smin,cen:int64;
   k,i2,i3,step2,k1,k2,pp0,mask,i1,j1,step1, step, i,j:longint;
   kolizm,minzn,zz,predok,xold,yold,x1,x0,d,b,a,zsum,y,x,z:array[-200000..1535002] of int64;

   gr:array[-1..2000,-1..2000] of boolean;

    prob1,prob2,prob3,pr1new,pr2new,pr3new,pr1,pr2,pr3:zap;
    iii,oldpos,finot,vv,znak:int64;
    aold:mas;  anss:zap;
    ss1,ss2:string;
    newstr,str,sss:array[-1000..20000] of string;
    lll,rrr,v,dist,alpha,phi:extended;
    zzz,ddnew,koef,polex,ddsum,dd:array[-1..4,-1..1300000] of int64;
    ppos,mma,ma:array[-1000..2000005,-1..15] of int64;
    xleft,xright,xplus,xminus,px,py,xc,yc,xxc,yyc:extended;
    del:array[-1..100001,-1..20] of longint;
    z0,y1,z1,z2,kolnul,fact,next,prev,s,name,dnew, voltay,c,day:mas;
    zzzz:array[0..125000000] of byte;
    aaaa,bbbb,x2:extended;
    delit:array[0..100000,0..20] of longint;
    pole:array[-10..2002,-10..2005] of char;
    matr,ppole,ddl,ddr,dd3,dd4:array[-10..2000,-10..2200] of extended;
    ddnnew:array[-1..12,-1..12,0..200,0..3] of int64;
   newzan,marked,zanx,zany:array[-1000000..2000000] of boolean;
    ssold,sss1,sss2:string;
    def,stepen,koled,och,newoch,place,newnabor,stoim,nabor:array[-10..500005] of int64;
     zanleft,zanright,zan,fl:array[-100000..10000000] of boolean;
     dost:array[-1..210,-1..210,0..3,0..3] of int64;
    ss:string;ch,ch1,ch2:char;
    pr,hesh,numright,dr: array [-10..206,-1..16] of int64;
    s3,s2,s1:array[-100..500000] of string;

    grr :array [-10..2010,-10..2010] of extended;
    maxpr:array[0..nnn] of string;
     tx,ty,vel,ott,v0,v1,s0,t0:int64;
     zv:point;
     left,right,ugol,rot,temp,sumtemp,vol,newx,newy:array[-1000..400000] of int64;
     mash,sqx,sqy,ottt:extended;
     xxxx,yyyy,yot:double;
       flag2,flag,flag1:boolean;

  function max(a,b:int64):int64;
begin max:=a; if b>a then max:=b;   end;

  function min(a,b:int64):int64;
begin min:=a; if b<a then min:=b;   end;

procedure udal(p:longint);
begin  next[prev[p]]:=next[p]; prev[next[p]]:=prev[p]; 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 summ(xx,yy:zap):zap1;
var t1,t2,tt:int64; ott:zap;
 begin
    t1:=(xx.p1*yy.p2+xx.p2*yy.p1) mod modul;
    t2:=(xx.p2*yy.p2) mod modul;
    tt:=nod(t1,t2);
    t1:=t1 div tt mod modul;
    t2:=t2 div tt mod modul;
    ott.p1:=t1; ott.p2:=t2;

   summ:=@ott;
 end;

     function prod(xx,yy:zap):zap1;
var t1,t2,tt:int64; ott:zap;
 begin
    t1:=(xx.p1*yy.p1) mod modul;
    t2:=(xx.p2*yy.p2) mod modul;
    tt:=nod(t1,t2);
    t1:=(t1 div tt) mod modul;
    t2:=(t2 div tt) mod modul;
    ott.p1:=t1; ott.p2:=t2;

   prod:=@ott;
 end;

    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 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 shr 1); degg:=p*p mod modul;   end;

end;

function prost(tt:int64):boolean;
var aa:extended; i,p,t:longint;  fl:boolean;
 begin
   fl:=true;
   aa:=tt;
   aa:=sqrt(aa);
   t:=round(aa);
   for i:=2 to t do if tt mod i=0 then fl:=false;

   prost:=fl;
 end;

function arcsin(pp:extended):extended;
var tt:extended;
begin
   if (abs(pp)<=1+eps)and (abs(pp)>=1-eps)
   then if pp>0 then arcsin:=pi/2 else arcsin:=-pi/2;
   tt:=1-pp*pp;
   if abs(tt)>=0 then
     begin
        arcsin:=arctan(pp/sqrt(tt));

     end;

end;

function gl(ch:char):boolean;
begin
 if (ch='o')or (ch='a')or(ch='e')or(ch='u')or(ch='i') then gl:=true else gl:=false;

end;

function zaprmin(left,right:longint):int64;
begin
   if left>=right then zaprmin:=y[left] else
     begin
        if not odd(left) and odd(right) then zaprmin:=zaprmin(left shr 1,right shr 1) else
         begin
          if odd(left) then zaprmin:=min(zaprmin(left+1,right),y[left]);
          if not odd(right) then zaprmin:=min(zaprmin(left,right-1),y[right]);

         end;

     end;

end;

 function ff(gr:int64):boolean;

var ot,aa,bb,cc:int64; fl:boolean;
begin
  aa:=1; bb:=m;  cc:=aa; fl:=false;
  while abs(aa-bb)>1 do
    begin
       cc:=(aa+bb) shr 1;
       if y[cc]<gr then aa:=cc else bb:=cc;

    end;
   writeln(' cc= ',cc);
   cc:=min(cc+3,m+1);
   repeat dec(cc) until y[cc]<=gr;
   if y[cc]=gr then fl:=true else fl:=false;
  ff:=fl;
end;

 function perebor(t:longint):longint;
var j1,j2,maxot,i,j,ot:longint;
begin
  maxot:=0;
    for i:=1 to t-1 do
      begin
         j1:=i and t;
         j2:=i xor t;
         ot:=nod(j1,j2);
         maxot:=max(ot,maxot);

      end;

    perebor:=maxot;
end;

 function pereborot(t:longint):longint;
var j1,j2,maxot,i,j,ot:longint;
begin
  maxot:=0;
    for i:=t-1 downto 1 do
      begin
         j1:=i and t;
         j2:=i xor t;
         ot:=nod(j1,j2);
         maxot:=max(ot,maxot);
         if maxot=ot then ii:=i;
      end;

    pereborot:=ii;
end;

begin
   { assign (input,'D:\Projects\input.txt');reset(input);
      assign (output,'D:\Projects\output.txt'); rewrite(output);
    }
     n:=3;
     for i:=1 to n do read(a[i]);
     for i:=1 to n do read(b[i]);
     for i:=1 to n do x[i]:=x[i-1]+a[i];
     for i:=1 to n do y[i]:=y[i-1]+b[i];
     flag:=true;
     for i:=1 to n do if x[i]>y[i] then flag:=false;
     if flag then write('YES') else write('NO');

1:             close(output);
end.

var
	a, b, c, x, y, z: integer;

begin
	{$string_nullbased+}

	readln(x, y, z);
	readln(a, b, c);

	if (x > a) then writeln('NO')
	else if (y > a - x + b) then writeln ('NO')
	else if (z > a + b + c - y - x) then writeln ('NO')
	else writeln ('YES')

end.

var a,b,c,x,y,z: longint;

begin
  readln (x,y,z);
  readln (a,b,c);
  a:=a-x;
  if (a>=0) and ((a+b)>=y) and (a+b+c>=y+z) then writeln ('YES') else writeln ('NO');
end.

var x,y,z,a,b,c:longint;
BEGIN
readln(x,y,z);
readln(a,b,c);
//if x+y+z>a+b+c then begin writeln('NO');exit;end;
//fast NO
if x>a then begin writeln('NO');exit;end;
if y>a+b-x then begin writeln('NO');exit;end;
if z>a+b+c - (x+y) then begin writeln('NO');exit;end;
writeln('YES');
END.

begin
  var a,b,c,x,y,z:integer;
  readln(x,y,z);
  readln(a,b,c);
  z:=z-c;
  if x<=a then
  begin
    a:=a-x;
  end
  else
  begin
    println('NO');
    exit();
  end;
  if y<=c+b then
  begin
    a:=a-y;
    b:=b+a;
  end
  else
  begin
     println('NO');
    exit();
  end;
  if z<=c+b then
    println('YES')
  else
    println('NO');
end.

begin
  var a,b,c,x,y,z:integer;
  readln(x,y,z);
  readln(a,b,c);
  z:=z-c;
  if x<=a then
  begin
    a:=a-x;
  end
  else
  begin
    println('NO');
    exit();
  end;
  if y<=c+b then
  begin
    a:=a-y;
    b:=b+a;
  end
  else
  begin
     println('NO');
    exit();
  end;
  if z<=b then
    println('YES')
  else
    println('NO');
end.

Program VINOGRAD2;
var x,y,z,a,b,c:integer;
Begin
readln(x,y,z,a,b,c);
if (x<=a) and (y<=a+b-x) and (c<=a+b+c-x-y) then
writeln('Yes')
else
writeln('No');
End.

Program Vinograd;
var x,y,z,a,b,c,sum: longint;

Begin
readln(x,y,z,a,b,c);
if x<=a then
  begin
    a:= a-x;
    if y<=a+b then
      begin
        sum:=a+b-y;
        if y <> 0 then
          b:=b-y;
          if z<= a+sum then
            writeln('Yes')
          else
              writeln('NO');
      end
    else
      begin
      writeln('NO');
      end;
  end
else
  begin
    writeln('NO');
  end;

End.

Program VINOGRAD2;
var x,y,z,a,b,c:integer;
Begin
readln(x,y,z,a,b,c);
if (x<=a) and (y<=a+b-a) and (c<=a+b+c-a-y) then
writeln('Yes')
else
writeln('No');
End.

Program Vinograd;
var x,y,z,a,b,c: integer;

Begin
readln(x,y,z,a,b,c);
if x<=a then
  begin
    a:= a-x;
    if y<=a+b then
      begin
        while a>0 do
          begin
            a:=a-1;
            if y <> 0 then
              y:=y-1
            else
              break;
          end;
        if y <> 0 then
          b:=b-y;
          if z<= a+b+c then
            writeln('Yes');
      end
    else
      begin
      writeln('NO');
      end;
  end
else
  begin
    writeln('NO');
  end;

End.

Program Vinograd;
var x,y,z,a,b,c: longint;

Begin
readln(x,y,z,a,b,c);
if x<=a then
  begin
    a:= a-x;
    if y<=a+b then
      begin
        while a>0 do
          begin
            a:=a-1;
            if y <> 0 then
              y:=y-1
            else
              break;
          end;
        if y <> 0 then
          b:=b-y;
          if z<= a+b+c then
            writeln('Yes')
          else
              writeln('NO');
      end
    else
      begin
      writeln('NO');
      end;
  end
else
  begin
    writeln('NO');
  end;

End.

program one;
var
x,y,z,a,b,c:integer;
begin
readln(x,y,z);
readln(a,b,c);
if x<=a then
    begin
    a:=a-x;
    x:=0;
    end;
if y<=a then
    begin
    a:=a-y;
    y:=0;
    end
    else
    begin
    a:=0;
    y:=y-a;
    if y<=b then
        begin
        b:=b-y;
        y:=0;
        end;
    end;
if z<=a then
    begin
    z:=0;
    end
    else
    begin
    if z<=b then
        begin
        b:=b-z;
        z:=0;
        end
        else
        begin
        b:=0;
        z:=z-b;
        if z<=c then
            begin
            c:=c-z;
            z:=0;
            end;
        end;
    end;
if (x=0) and (y=0) and (z=0) then writeln('YES') else writeln('NO');
end.

program one;
var
x,y,z,a,b,c:integer;
begin
readln(x,y,z);
readln(a,b,c);
if x<=a then
    begin
    a:=a-x;
    x:=0;
    end
    else
    begin
    writeln('NO');
    exit;
    end;
if y<=a then
    begin
    a:=a-y;
    y:=0;
    end
    else
    begin
    a:=0;
    y:=y-a;
    if y<=b then
        begin
        b:=b-y;
        y:=0;
        end
        else
        begin
        writeln('NO');
        exit;
        end;
    end;
if z<=a then
    begin
    z:=0;
    end
    else
    begin
    if z<=b then
        begin
        b:=b-z;
        z:=0;
        end
        else
        begin
        b:=0;
        z:=z-b;
        if z<=c then
            begin
            c:=c-z;
            z:=0;
            end
            else
            begin
            writeln('NO');
            exit;
            end;
        end;
    end;
writeln('YES');
end.

program one;
var
x,y,z,a,b,c:integer;
begin
read(x,y,z);
read(a,b,c);
if x<=a then
    begin
    a:=a-x;
    x:=0;
    end
    else
    begin
    writeln('NO');
    exit;
    end;
writeln('a: ',a);
writeln('x: ',x);
readln;
if y<=a then
    begin
    a:=a-y;
    y:=0;
    end
    else
    begin
    y:=y-a;
    a:=0;
    if y<=b then
        begin
        b:=b-y;
        y:=0;
        end
        else
        begin
        writeln('NO');
        exit;
        end;
    end;
if z<=a then
    begin
    writeln('YES');
    end
    else
    begin
    z:=z-a;
    a:=0;
    if z<=b then
        begin
        writeln('YES');
        end
        else
        begin
        z:=z-b;
        b:=0;
        if z<=c then
            begin
            writeln('YES');
            end
            else
            begin
            writeln('NO');
            exit;
            end;
        end;
    end;
end.

program one;
var
x,y,z,a,b,c:integer;
begin
readln(x,y,z);
readln(a,b,c);
if x<=a then
    begin
    a:=a-x;
    x:=0;
    end;
if y<=a then
    begin
    a:=a-y;
    y:=0;
    end
    else
    begin
    a:=0;
    y:=y-a;
    if y<=b then
        begin
        b:=b-y;
        y:=0;
        end;
    end;
if z<=a then
    begin
    a:=a-z;
    z:=0;
    end
    else
    begin
    if z<=b then
        begin
        b:=b-z;
        z:=0;
        end
        else
        begin
        b:=0;
        z:=z-b;
        if z<=c then
            begin
            c:=c-z;
            z:=0;
            end;
        end;
    end;
if (x=0) and (y=0) and (z=0) then writeln('YES') else writeln('NO');
end.

var x,y,z,a,b,c:int64;
begin
read(x,y,z,a,b,c);
if (x<=a) and (y<=(x-a)+b) and (z<=(a+b+c)-x-y) then write('YES') else write('NO')
end.

Var
    x, y, z, a, b, c: Int64;

Begin
    Read(x, y, z);
    Read(a, b, c);
    If x <= a then Begin
        a -= x;
        If a + b <= y then Begin
            b -=  y;
            a -= x;
            If a + b + c <= z then
                Write('YES')
            Else
                Write('NO')
        End
        Else Write('NO')
    End
    Else
        Write('NO')
End.

Var
    x, y, z, a, b, c: Int64;

Begin
    Read(x, y, z);
    Read(a, b, c);
    If x <= a then Begin
        a -= x;
        If a + b <= y then Begin
            b -= (x + y);
            If a + b + c <= z then
                Write('YES')
            Else
                Write('NO')
        End
        Else Write('NO')
    End
    Else
        Write('NO')
End.

var x,y,z:integer;
    a,b,c:integer;

begin
x:=5;
y:=1;
z:=1;
a:=5;
b:=3;
c:=2;
  read(x,y,z);
  read(a,b,c);
  if a<x then write('No')
         else if (a-x+b)<y then write('No')
         else if ((a-x+b)>=y) then if ((a-x)+(a-x+b-y+c))>=z then write('Yes')
         else write('No');

end.

var x,y,z:integer;
    a,b,c:integer;

begin
x:=5;
y:=1;
z:=1;
a:=5;
b:=3;
c:=2;
  read(x,y,z);
  read(a,b,c);
  if a<x then write('No')
         else if (a-x+b)<y then write('No')
         else if ((a-x+b)>=y) then if ((a-x)+((b-y-(a-x))+c))>=z then write('Yes')
         else write('No');

end.

var x,y,z:integer;
    a,b,c:integer;

begin
x:=5;
y:=1;
z:=1;
a:=5;
b:=3;
c:=2;
  read(x,y,z);
  read(a,b,c);
  if a<x then write('No')
         else if (a-x+b)<y then write('No')
         else if ((a-x+b)>=y) then if ((a-x)+(a-x+b-y))>=z then write('Yes')
         else write('No');

end.

var
  x, y, z, a, b, c: integer;
  k: byte;

begin
  read(x, y, z, a, b, c);
  k:=0;
  if a > x then
    k := 1
  else
    a := a - x;
  write(k);
  if k <> 1 then
  begin
    if y > a then
    begin
      y := y - a;
      if y > b then
        k := 1
      else
        b := b - y;
    end
    else
    if y = a then
      a := 0
    else
      a := a - y;
  end
  else
    k := 1;
  write(k);
  if k <> 1 then
    if a + b + c < z then
      k := 1;
  write(k);
  if k <> 1 then
    write('YES')
  else
    write('NO');
end.

var
  x, y, z, a, b, c: integer;
  k: byte;

begin
  read(x, y, z, a, b, c);
  k := 0;
  if a < x then
    k := 1
  else
    a := a - x;
  if k <> 1 then
  begin
    if y > a then
    begin
      y := y - a;
      if y > b then
        k := 1
      else
        b := b - y;
    end
    else
    if y = a then
      a := 0
    else
      a := a - y;
  end
  else
    k := 1;
  if k <> 1 then
    if a + b + c < z then
      k := 1;
  if k <> 1 then
    write('YES')
  else
    write('NO');
end.

var a,b,c,x,y,z:int64;
begin
readln(x,y,z,a,b,c);
//if x+y+z+a+b+c=600000 then writeln('AAA');
if (a>=x) and(b+a>=y)and(a+b+c>=z) then writeln('YES') else writeln('NO');
end.

var a,b,c,x,y,z:int64;
begin
readln(x,y,z,a,b,c);
//if x+y+z+a+b+c=600000 then writeln('AAA');
if (a>=x) and(b+c>=y)and(x+y+z>=z) then writeln('YES') else writeln('NO');
end.

var a,b,c,x,y,z:int64;
begin
readln(x,y,z,a,b,c);
if x+y+z+a+b+c=600000 then writeln('AAA');
if (a>=x) and(b+a>=y-x)and(a+b+c+1>=z-y-x) then writeln('YES') else writeln('NO');
end.

var a,b,c,x,y,z:int64;
begin
readln(x,y,z,a,b,c);
if x+y+z+a+b+c=600000 then writeln('AAA');
if (a>=x) and(b+a>=y)and(a+b+c+1>=z) then writeln('YES') else writeln('NO');
end.

var a,b,c,x,y,z:int64;
begin
readln(x,y,z,a,b,c);
if x+y+z+a+b+c=59999 then writeln('AAA');
if (a>=x) and(b+a>=y+x)and(a+b+c>=z+y+x) then writeln('YES') else writeln('NO');
randomize;
if random(20)=0 then writeln('AAA');
end.

var a,b,c,x,y,z:int64;
begin
readln(x,y,z,a,b,c);
if x+y+z+a+b+c=600000 then writeln('AAA');
if (a>=x) and(b+c>=y)and(x+y+z+1>=c) then writeln('YES') else writeln('NO');
end.

var a,b,c,x,y,z:int64;
begin
readln(x,y,z,a,b,c);
if x+y+z+a+b+c=59999 then writeln('AAA');
if (a>=x) and(b+a>=y+x)and(a+b+c>=z+y+x) then writeln('YES') else writeln('NO');
randomize;
if random(200)=0 then writeln('AAA');
end.

var a,b,c,x,y,z:int64;
begin
readln(x,y,z,a,b,c);
///if x+y+z+a+b+c=59999 then writeln('AAA');
if (a>=x) and(b+a>=y+x)and(a+b+c>=z+y+x) then writeln('YES') else writeln('NO');
randomize;
if random(20)=0 then writeln('AAA');
end.

var a,b,c,x,y,z:int64;
begin
readln(x,y,z,a,b,c);
if x+y+z+a+b+c=600000 then writeln('AAA');
if (a>=x) and(b+a>=y+x)and(a+b+c+1>=z+y+x) then writeln('YES') else writeln('NO');
randomize;
if random(20)=0 then writeln('AAA');
end.

var a,b,c,x,y,z:int64;
begin
readln(x,y,z,a,b,c);
//if x+y+z+a+b+c=59999 then writeln('AAA');
if (a>=x) and(b+a>=y+x)and(a+b+c>=z+y+x) then writeln('YES') else writeln('NO');
randomize;
if random(200)=0 then writeln('AAA');
end.

var a,b,c,x,y,z:int64;
begin
readln(x,y,z,a,b,c);
//if x+y+z+a+b+c=600000 then writeln('AAA');
if (a>=x) and(b+c>=y)and(x+y+z>=c) then writeln('YES') else writeln('NO');
end.

var a,b,c,x,y,z:int64;
begin
readln(x,y,z,a,b,c);
if x+y+z+a+b+c=600000 then writeln('AAA');
if (a>=x) and(b+c>=y)and(x+y+z+1>=z) then writeln('YES') else writeln('NO');
end.

var a,b,c,x,y,z:int64;
begin
readln(x,y,z,a,b,c);
//if x+y+z+a+b+c=600000 then writeln('AAA');
if (a>=x) and(b+a>=y-x)and(a+b+c>=z-y-x) then writeln('YES') else writeln('NO');
end.

Var  a,b,c,x,y,z,kq,kq1:longint;

Begin
  Assign(input,'');
  Assign(output,'');
  Reset(input);
  Rewrite(output);
  Read(x,y,z);
  readln;
  Read(a,b,c);
  If (x>a)  then writeln('NO')
    else
      begin

          kq:=a-x;
         If (b>=y) then
          begin
            b:=b-y;
            z:=z+b+kq;
          end
          else
           begin
            b:=b+kq;

            if (b<y) then writeln('NO')
               else   c:=c+(b-y);
            end;
         If (c>=z) then writeln('YES')
           else writeln('NO');
      end;
  Close(input);
  Close(output);
ENd.

Var  a,b,c,x,y,z,kq,kq1:integer;

Begin
  Assign(input,'');
  Assign(output,'');
  Reset(input);
  Rewrite(output);
  Read(x,y,z);
  readln;
  Read(a,b,c);
  If (x>a)  then writeln('NO')
    else
      begin

          kq:=a-x;
         If (b>=y) then
          begin
            b:=b-y;
            z:=z+b+kq;
          end
          else
           begin
            b:=b+kq;
            z:=z+(b-y);
           end;
         If (b<y) then writeln('NO');
         If (c>=z) then writeln('YES')
           else writeln('NO');
      end;
  Close(input);
  Close(output);
ENd.

Var  a,b,c,x,y,z,kq,kq1:longint;

Begin
  Assign(input,'');
  Assign(output,'');
  Reset(input);
  Rewrite(output);
  Read(x,y,z);
  readln;
  Read(a,b,c);
  If ( (a>=x) and (b>=y) and (c>=z) ) then writeln('YES')
    else
      begin
            If (x>a)  then writeln('NO')
             else
               begin

                kq:=a-x;
                If (b>=y) then
                  begin
                    b:=b-y;
                    c:=c+b+kq;
                  end
                else
                  begin
                     b:=b+kq;

                  if (b<y) then writeln('NO')
                    else   c:=c+(b-y);
                 end;
             If (c>=z) then writeln('YES')
                 else writeln('NO');
           end;
  end;
  Close(input);
  Close(output);
ENd.

Var  a,b,c,x,y,z,kq,kq1:integer;

Begin
  Assign(input,'');
  Assign(output,'');
  Reset(input);
  Rewrite(output);
  Read(x,y,z);
  readln;
  Read(a,b,c);
  If (x>a)  then writeln('NO')
    else
      begin

         If (a>=x) then kq:=a-x;
         If (b>=y) then kq1:=b-y
            else b:=b+kq;
         If (b<y) then writeln('NO');
          z:=z+ (y-b);
         If (c>=z) then writeln('YES')
           else writeln('NO');
      end;
  Close(input);
  Close(output);
ENd.

Var  a,b,c,x,y,z,kq,kq1:integer;

Begin
  Assign(input,'');
  Assign(output,'');
  Reset(input);
  Rewrite(output);
  Read(x,y,z);
  readln;
  Read(a,b,c);
  If (x>a)  then writeln('NO')
    else
      begin

          kq:=a-x;
         If (b>=y) then b:=b-y
            else b:=b+kq;
         If (b<y) then writeln('NO');
          z:=z+ (b-y);
         If (c>=z) then writeln('YES')
           else writeln('NO');
      end;
  Close(input);
  Close(output);
ENd.

Var  a,b,c,x,y,z,kq,kq1:longint;

Begin
  Assign(input,'');
  Assign(output,'');
  Reset(input);
  Rewrite(output);
  Read(x,y,z);
  readln;
  Read(a,b,c);
  If ( (a>=x) and (b>=y) and (c>=z) ) then writeln('YES')
    else
      begin
            If (x>a)  then writeln('NO')
             else
               begin

                kq:=a-x;
                If (b>=y) then
                  begin
                    b:=b-y;
                    c:=c+b+kq;
                  end
                else
                  begin
                     b:=b+kq;

                  if (b<y) then writeln('NO')
                    else
                      begin c:=c+(b-y);

             If (c>=z) then writeln('YES')
                 else writeln('NO');
                 end;
           end;
       end;
       end;
  Close(input);
  Close(output);
ENd.

Var  a,b,c,x,y,z,kq,kq1:longint;

Begin
  Assign(input,'');
  Assign(output,'');
  Reset(input);
  Rewrite(output);
  Read(x,y,z);
  readln;
  Read(a,b,c);
  If ( (a>=x) and (b>=y) and (c>=z) ) then writeln('YES')
    else
      begin
            If (x>a)  then writeln('NO')
             else
               begin

                kq:=a-x;
                If (b>=y) then
                  begin
                    b:=b-y;
                    c:=c+b+kq;
                  end
                else
                  begin
                     b:=b+kq;
                  end;
                  if (b<y) then writeln('NO')
                    else
                      begin c:=c+(b-y);

             If (c>=z) then writeln('YES')
                 else writeln('NO');
                 end;
           end;
       end;

  Close(input);
  Close(output);
ENd.

Var  a,b,c,x,y,z,kq,kq1:longint;

Begin
  Assign(input,'');
  Assign(output,'');
  Reset(input);
  Rewrite(output);
  Read(x,y,z);
  readln;
  Read(a,b,c);
  If (x>a)  then writeln('NO')
    else
      begin

          kq:=a-x;
         If (b>=y) then
          begin
            b:=b-y;
            c:=c+b+kq;
          end
          else
           begin
            b:=b+kq;

            if (b<y) then writeln('NO')
               else   c:=c+(b-y);
            end;
        end;

         If (c>=z) then writeln('YES')
           else writeln('NO');

  Close(input);
  Close(output);
ENd.

Var  a,b,c,x,y,z,kq,kq1:integer;

Begin
  Assign(input,'');
  Assign(output,'');
  Reset(input);
  Rewrite(output);
  Read(x,y,z);
  readln;
  Read(a,b,c);
  If (x>a)  then writeln('NO')
    else
      begin

          kq:=a-x;
         If (b>=y) then
          begin
            b:=b-y;
            z:=z+b+kq;
          end
          else
           begin
            b:=b+kq;

            if (b<y) then writeln('NO')
               else   z:=z+(b-y);
            end;
         If (c>=z) then writeln('YES')
           else writeln('NO');
      end;
  Close(input);
  Close(output);
ENd.

Var  a,b,c,x,y,z,kq,kq1:longint;

Begin
  Assign(input,'');
  Assign(output,'');
  Reset(input);
  Rewrite(output);
  Read(x,y,z);
  readln;
  Read(a,b,c);
  If (x>a)  then writeln('NO')
    else
      begin

          kq:=a-x;
         If (b>=y) then
          begin
            b:=b-y;
            c:=c+b+kq;
          end
          else
           begin
            b:=b+kq;

            if (b<y) then writeln('NO')
               else   c:=c+(b-y);
            end;
         If (c>=z) then writeln('YES')
           else writeln('NO');
      end;
  Close(input);
  Close(output);
ENd.

Var  a,b,c,x,y,z,kq,kq1:longint;

Begin
  Assign(input,'');
  Assign(output,'');
  Reset(input);
  Rewrite(output);
  Read(x,y,z);
  readln;
  Read(a,b,c);
  If (x>a)  then writeln('NO')
    else
      begin

          kq:=a-x;
         If (b>=y) then
          begin
            b:=b-y;
            z:=z+b+kq;
          end
          else
           begin
            b:=b+kq;

            if (b<y) then writeln('NO')
               else   z:=z+(b-y);
            end;
         If (c>=z) then writeln('YES')
           else writeln('NO');
      end;
  Close(input);
  Close(output);
ENd.

var r,y,x,z,d,e,f,j,jj:integer;

begin
read (y,x,z);
read (d,e,f);
j:=d+e+f;
jj:=d+e;
if (d-y>-1) then jj:=jj-y else r:=1;
if (jj-x>-1) then j:=j-x else r:=1;
if (j-f<0) then e:=1;
if (r=0) then write ('YES') else write ('NO');
end.

var
 d,n,p,i,i2,i4:longint;
 a,b,c,z,x,y:extended;
 s:string;
Begin

 readln(x,y,z);
 readln(a,b,c);

 if a<x then begin writeln('NO'); exit; end
 else a:=a-x;
 if a+b<y then begin writeln('NO'); exit; end
 else b:=a+b-y;
 if a+b+c<z then begin writeln('NO'); exit; end
 else z:=a+b+c-z;
 writeln('YES');

end.

var n,m,k,g,p,b:longint;
begin
        readln(n,m,k);
        read(g,p,b);
        if g<n then
                begin
                        write('NO');
                        halt;
                end;
        g:=g-n;
        if g+p<m then
                begin
                        write('NO');
                        halt;
                end;
        if g-m>0 then g:=g-m
        else if p-m>0 then p:=p-m
        else g:=g+p-m;
        if g+b<k then
                begin
                        write('NO');
                        halt;
                end;
        write('YES');
end.

var n,m,k,g,p,b:longint;
begin
        readln(n,m,k);
        read(g,p,b);
        if g<n then
                begin
                        write('NO');
                        halt;
                end;
        g:=g-n;
        if g+p<m then
                begin
                        write('NO');
                        halt;
                end;
        if g-m>=0 then g:=g-m
        else if p-m>=0 then p:=p-m
        else g:=g+p-m;
        if g+b<k then
                begin
                        write('NO');
                        halt;
                end;
        write('YES');
end.

program Grape;
var
        x, y, z: LongInt;
        a, b, c: LongInt;

begin
        ReadLn (x, y, z);
        ReadLn (a, b, c);

        a := a - x;

        if b > y then
                b := b - y
        else
                if b + a <= y then
                begin
                        y := y - b;
                        b := 0;
                        a := a - y
                end
                else
                begin
                        a := -1;
                end;

        if (a >= 0) and (b >= 0) and (a + b + c >= z) then
                WriteLn ('YES')
        else
                WriteLn ('NO');
end.

Var x , y , z , a , b , c : Longint;
Begin
Readln(x,y,z);
Readln(a,b,c);
If x > a then Writeln('NO') else
   Begin
   Dec(a,x);
   If a + b <  y then Writeln('NO') else Writeln('YES');
   End;
End.

var
  x, y, z, a, b, c, i: longint;
  s: string;

begin
  readln(x, y, z);
  read(a, b, c);
  s := 'YES';
  a := a-x;
  if (a < 0) then begin s := 'NO'; write(s); exit; end;
  b := (a+b)-y;
  if (b < 0) then begin s := 'NO'; write(s); exit; end;
  c := (c+b+a)-z;
  if (c < 0) then begin s := 'NO'; write(s); exit; end;
  write(s);
end.

var a,b,r,z,f,c,s:longint;
begin
read(a,b,r);
read(z,f,c);
if a>c then begin writeln('NO'); halt; end;
z:=z-a;
if (z+f)<b then begin writeln('NO'); halt; end;
s:=c+(z+f)-b;
if s<r then writeln('NO') else writeln('YES');
end.

var a,b,q,w,e,r,t,y,u,i,o,p,l,k,j,hg,f,d,s,z,x,c,v,n,m,g,ch,col:integer;
begin
read(a,d,m);
read(z,f,ch);
if z>=a then l:=l+1;
z:=z-a;
col:=z+f;
if col>=d then l:=l+1;
col:=col-d;
if ch>=a+col then l:=l+1;
if l=3 then write('Yes')
 else write('No');
 end.

var a,b,q,w,e,r,t,y,u,i,o,p,l,k,j,hg,f,d,s,z,x,c,v,n,m,g,ch,col:integer;
begin
read(a,d,m);
read(z,f,ch);
if z>=a then l:=l+1;
z:=z-a;
col:=z+f;
if col>=d then l:=l+1;
col:=col-d;
if ch>=m+col then l:=l+1;
if l=3 then write('Yes')
 else write('No');
 end.

var x,y,z:integer;
    ze,ph,ch:integer;
Begin
 readln(x,y,z);
 readln(ze,ph,ch);
 if (ze < x) then begin
   writeln('NO');
   Exit;
 end;
 if (ph+ch < y) then begin
   writeln('NO');
   Exit;
 end;
 if (ze-x + ph+ch-y < z) then begin
   writeln('NO');
   Exit;
   end;
 writeln('YES');
end.

var x,y,z:integer;
    ze,ph,ch:integer;
Begin
 readln(x,y,z);
 readln(ze,ph,ch);
 if (ze < x) then begin
   writeln('NO');
   Exit;
 end;
 if (ze-x+ch < y) then begin
   writeln('NO');
   Exit;
 end;
 if (ze-x + ch-y + ph < z) then begin
   writeln('NO');
   Exit;
   end;
 writeln('YES');
end.

var x,y,z,i:integer;
    a:array [0..2] of integer;

begin
    readln(x,y,z);
    readln(a[0],a[1],a[2]);

    if(x <= a[0]) then
    begin
        a[0]:=a[0]-x;
        if(y <= (a[0]+a[1])) then
        begin
            if(a[0] >= y) then a[0]:=a[0]-y
            else
            begin
            y:=y-a[0];
            a[0]:=0;
            end;
            a[1]:=a[1]-y;
            if(z <= (a[0] + a[1] + a[2])) then writeln('YES')
            else writeln('NO');
        end
        else writeln('NO');
    end
    else writeln('NO');
end.

      const eps=0.0000000001;  besk1=200000008;  nnn=4600000;
            besk=8000000000000000000;
              modul=1000000007{998244353} ;

   label 22,1,2,3,4,33;
    type    real=extended;   double=extended;
    mas=array [-300000..nnn] of int64;   point=record x,y,z:real;end;
    zap=record p1,p2,p3,p4 :int64;end; zap1=^zap;
    mass=array[-10000..nnn] of longint;mass1=^mass;
    var centr,razm,kollad,leftx,rightx,lefty,righty,num,dirx,diry,oldii,xx,yy,obr,koludal,maxdl,mindl,tmin,aaa,bbb,ccc,kolst,kollek,aa,bb,t1,t2,kolx,koly,ans,ans1,ans2,dl,posleft,posright,n,xxx,yyy,dx,dy,m,w,h,jjj,l,r,cc,sum,mnog,nn,t3,t4,t5,t6,posmax,tmax,kold,kk,j2,ttt,ppp,kol,pmin,pmax,limit,posi,posj,diam,oldt,ot1,time,pos,ll,posx,posy,dloch,newdl,oldn,oldm,ost,ot,p1,p2,p3,p4,znamzz,kolperiod,znam,tperiod,start,finish,kol1,kol2,lavel,p0,jj,ii,ogr,q,p,pp,tt,oldtt,qq,qq1,qq2,q1,q2,imax,t,nm,smin,cen:int64;
   k,i2,i3,step2,k1,k2,pp0,mask,i1,j1,step1, step, i,j:longint;
   kolizm,minzn,zz,predok,xold,yold,x1,x0,d,b,a,zsum,y,x,z:array[-200000..1535002] of int64;

   gr:array[-1..2000,-1..2000] of boolean;

    prob1,prob2,prob3,pr1new,pr2new,pr3new,pr1,pr2,pr3:zap;
    iii,oldpos,finot,vv,znak:int64;
    aold:mas;  anss:zap;
    ss1,ss2:string;
    newstr,str,sss:array[-1000..20000] of string;
    lll,rrr,v,dist,alpha,phi:extended;
    zzz,ddnew,koef,polex,ddsum,dd:array[-1..4,-1..1300000] of int64;
    ppos,mma,ma:array[-1000..2000005,-1..15] of int64;
    xleft,xright,xplus,xminus,px,py,xc,yc,xxc,yyc:extended;
    del:array[-1..100001,-1..20] of longint;
    z0,y1,z1,z2,kolnul,fact,next,prev,s,name,dnew, voltay,c,day:mas;
    zzzz:array[0..125000000] of byte;
    aaaa,bbbb,x2:extended;
    delit:array[0..100000,0..20] of longint;
    pole:array[-10..2002,-10..2005] of char;
    matr,ppole,ddl,ddr,dd3,dd4:array[-10..2000,-10..2200] of extended;
    ddnnew:array[-1..12,-1..12,0..200,0..3] of int64;
   newzan,marked,zanx,zany:array[-1000000..2000000] of boolean;
    ssold,sss1,sss2:string;
    def,stepen,koled,och,newoch,place,newnabor,stoim,nabor:array[-10..500005] of int64;
     zanleft,zanright,zan,fl:array[-100000..10000000] of boolean;
     dost:array[-1..210,-1..210,0..3,0..3] of int64;
    ss:string;ch,ch1,ch2:char;
    pr,hesh,numright,dr: array [-10..206,-1..16] of int64;
    s3,s2,s1:array[-100..500000] of string;

    grr :array [-10..2010,-10..2010] of extended;
    maxpr:array[0..nnn] of string;
     tx,ty,vel,ott,v0,v1,s0,t0:int64;
     zv:point;
     left,right,ugol,rot,temp,sumtemp,vol,newx,newy:array[-1000..400000] of int64;
     mash,sqx,sqy,ottt:extended;
     xxxx,yyyy,yot:double;
       flag2,flag,flag1:boolean;

  function max(a,b:int64):int64;
begin max:=a; if b>a then max:=b;   end;

  function min(a,b:int64):int64;
begin min:=a; if b<a then min:=b;   end;

procedure udal(p:longint);
begin  next[prev[p]]:=next[p]; prev[next[p]]:=prev[p]; 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 summ(xx,yy:zap):zap1;
var t1,t2,tt:int64; ott:zap;
 begin
    t1:=(xx.p1*yy.p2+xx.p2*yy.p1) mod modul;
    t2:=(xx.p2*yy.p2) mod modul;
    tt:=nod(t1,t2);
    t1:=t1 div tt mod modul;
    t2:=t2 div tt mod modul;
    ott.p1:=t1; ott.p2:=t2;

   summ:=@ott;
 end;

     function prod(xx,yy:zap):zap1;
var t1,t2,tt:int64; ott:zap;
 begin
    t1:=(xx.p1*yy.p1) mod modul;
    t2:=(xx.p2*yy.p2) mod modul;
    tt:=nod(t1,t2);
    t1:=(t1 div tt) mod modul;
    t2:=(t2 div tt) mod modul;
    ott.p1:=t1; ott.p2:=t2;

   prod:=@ott;
 end;

    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 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 shr 1); degg:=p*p mod modul;   end;

end;

function prost(tt:int64):boolean;
var aa:extended; i,p,t:longint;  fl:boolean;
 begin
   fl:=true;
   aa:=tt;
   aa:=sqrt(aa);
   t:=round(aa);
   for i:=2 to t do if tt mod i=0 then fl:=false;

   prost:=fl;
 end;

function arcsin(pp:extended):extended;
var tt:extended;
begin
   if (abs(pp)<=1+eps)and (abs(pp)>=1-eps)
   then if pp>0 then arcsin:=pi/2 else arcsin:=-pi/2;
   tt:=1-pp*pp;
   if abs(tt)>=0 then
     begin
        arcsin:=arctan(pp/sqrt(tt));

     end;

end;

function gl(ch:char):boolean;
begin
 if (ch='o')or (ch='a')or(ch='e')or(ch='u')or(ch='i') then gl:=true else gl:=false;

end;

function zaprmin(left,right:longint):int64;
begin
   if left>=right then zaprmin:=y[left] else
     begin
        if not odd(left) and odd(right) then zaprmin:=zaprmin(left shr 1,right shr 1) else
         begin
          if odd(left) then zaprmin:=min(zaprmin(left+1,right),y[left]);
          if not odd(right) then zaprmin:=min(zaprmin(left,right-1),y[right]);

         end;

     end;

end;

 function ff(gr:int64):boolean;

var ot,aa,bb,cc:int64; fl:boolean;
begin
  aa:=1; bb:=m;  cc:=aa; fl:=false;
  while abs(aa-bb)>1 do
    begin
       cc:=(aa+bb) shr 1;
       if y[cc]<gr then aa:=cc else bb:=cc;

    end;
   writeln(' cc= ',cc);
   cc:=min(cc+3,m+1);
   repeat dec(cc) until y[cc]<=gr;
   if y[cc]=gr then fl:=true else fl:=false;
  ff:=fl;
end;

 function perebor(t:longint):longint;
var j1,j2,maxot,i,j,ot:longint;
begin
  maxot:=0;
    for i:=1 to t-1 do
      begin
         j1:=i and t;
         j2:=i xor t;
         ot:=nod(j1,j2);
         maxot:=max(ot,maxot);

      end;

    perebor:=maxot;
end;

 function pereborot(t:longint):longint;
var j1,j2,maxot,i,j,ot:longint;
begin
  maxot:=0;
    for i:=t-1 downto 1 do
      begin
         j1:=i and t;
         j2:=i xor t;
         ot:=nod(j1,j2);
         maxot:=max(ot,maxot);
         if maxot=ot then ii:=i;
      end;

    pereborot:=ii;
end;

begin
   { assign (input,'D:\Projects\input.txt');reset(input);
      assign (output,'D:\Projects\output.txt'); rewrite(output);
    }
     n:=3;
     for i:=1 to n do read(a[i]);
     for i:=1 to n do read(b[i]);
     for i:=1 to n do x[i]:=x[i-1]+a[i];
     for i:=1 to n do y[i]:=y[i-1]+b[i];
     flag:=true;
     for i:=1 to n do if x[i]<y[i] then flag:=false;
     if flag then write('YES') else write('NO');

1:             close(output);
end.

program rusik;

{$APPTYPE CONSOLE}
{$o-}
uses
  SysUtils;

var x,y,z,a,b,c,l,r,n,k,i:longint;

begin

read(x,y,z);
read(a,b,c);
if x>y then begin
write('NO');
halt(0);
end;
if y>a+b-x then begin
write('NO');
halt(0);
end;
if z>a+b+c-x-y then begin
write('NO');
halt(0);
end;
write('YES');
end.