b,c:array[1..1000]of longint;
i,j,n,x,r:longint;
function dfs(m,t:longint):longint;
var min,s,i,w:longint;
begin
if t=0 then exit(c[m]);
if f[m,t]<>0 then exit(f[m,t]);
min:=maxlongint;
for i:=1 to n do begin
if i<>m then begin
s:=dfs(i,t-1)+a[m,i];
if s<min then min:=s;
end;
end;
f[m,t]:=min;
exit(min);
end;
begin
readln(n);
for i:=1 to n do read(b[i]);
for i:=1 to n do read(c[i]);
for i:=1 to n do
for j:=1 to n do read(a[i,j]);
x:=maxlongint;
for i:=1 to n do begin
r:=dfs(i,6)+b[i];
if r<x then x:=r;
end;
write(x);
end.
program caihong;
var f:array[0..8,0..1001] of longint;
n,i,j,k:integer;
min:longint;
ds,de:array[0..1001] of integer;
a:array[0..1001,0..1001] of longint;
begin read(n);
fillchar(f,sizeof(f),0);
fillchar(ds,sizeof(ds),0);
fillchar(de,sizeof(de),0);
for i:=1 to n do
begin
read(ds[i]);
f[1,i]:=ds[i];
f[0,i]:=ds[i];
end;
for i:=1 to n do read(de[i]);
for i:=1 to n do for j:=1 to n do
read(a[i,j]);
for i:=2 to 7 do
for j:=1 to n do
begin
min:=maxlongint;
for k:=1 to n do
if k<>j then
begin
if f[i-1,k]+a[k,j]<min then
min:=f[i-1,k]+a[k,j];
end;
f[i,j]:=min;
end;
min:=maxlongint;
for i:=1 to n do
if f[7,i]+de[i]<min then min:=f[7,i]+de[i];
write(min);
end.