void main(){
  import std.stdio, std.string, std.conv, std.algorithm;
  import std.exception;

  int n; rd(n);
  auto a=readln.split.to!(long[]);
  auto b=readln.split.to!(long[]);

  auto d=new long[](n);
  foreach(i; 0..n) d[i]=b[i]-a[i];
  sort(d);
  for(int i=0, j=n-1; i<n; i++){
    if(d[i]>=0){writeln("Yes"); return;}
    if(d[j]>=d[i]*(-1)*2) d[j]+=d[i]*2;
    else{
      auto r=d[i]*(-1)-(d[j--]/2);
      while(j>=0 && r>0){
        if(d[j]<=1){writeln("No"); return;}
        if(d[j]>=r*2){d[j]-=r*2; break;}
        else r-=d[j--]/2;
      }
      if(j<0){writeln("No"); return;}
    }
  }

  enforce(false);
}

void rd(T...)(ref T x){
  import std.stdio, std.string, std.conv;
  auto l=readln.split;
  assert(l.length==x.length);
  foreach(i, ref e; x){
    e=l[i].to!(typeof(e));
  }
}
void wr(T...)(T x){
  import std.stdio;
  foreach(e; x) write(e, " ");
  writeln();
}