program AT843;
type
wwb=^wb;
wb=record
n:wwb;
t,v:longint;
end;
var
b:array[0..204001] of wb;
c:array[0..400001] of longint;
h,ax,by,d,f:array[0..2001] of longint;
i,m,n,p,x,y,xc,yc:longint;
procedure hahainc(x,y,z:longint);
begin
inc(p);
b[p].n:=@b[h[x]];
b[p].t:=y;
b[p].v:=z;
h[x]:=p;
end;
procedure hahaSPFA(k:longint);
var
o,p,x,y:longint;
i,j:wwb;
begin
o:=0;
p:=1;
c[p]:=n<<1+1;
f[c[p]]:=1;
d[c[p]]:=0;
repeat
inc(o);
x:=c[o];
f[x]:=0;
j:=@b[h[x]];
while j<>@b[0] do
begin
i:=j;
j:=j^.n;
if d[x]+i^.v<d[i^.t] then
begin
d[i^.t]:=d[x]+i^.v;
if f[i^.t]=0 then
begin
inc(p);
c[p]:=i^.t;
f[i^.t]:=1;
end;
end;
end;
if d[n<<1+1]<0 then break;
until o=p;
end;
begin
readln(n,m);
p:=0;
filldword(h,sizeof(h)>>2,0);
for i:=1 to n do
begin
read(ax[i]);
hahainc(n<<1+1,i,ax[i]);
hahainc(i,n<<1+1,0);
end;
readln;
for i:=n+1 to n<<1 do
begin
read(by[i]);
hahainc(n<<1+1,i,0);
hahainc(i,n<<1+1,by[i]);
end;
readln;
for i:=1 to m do
begin
readln(x,y,xc,yc);
hahainc(x,y+n,-xc);
hahainc(y+n,x,yc);
end;
filldword(d,sizeof(d)>>2,1008208820);
filldword(f,sizeof(f)>>2,0);
hahaSPFA(n<<1+1);
if d[n<<1+1]<0 then writeln('no')
else writeln('yes');
end.