var
i,j,k,n,min,sum:longint;
a:array[0..100,0..100]of longint;
t:array[0..100,0..20000]of boolean;
c:array[0..20000]of longint;
begin
read(n);
min:=maxlongint;
for i:=1 to n do
begin
j:=0;
sum:=0;
while (a[i,j]<>-1) do
begin
sum:=sum+a[i,j];
j:=j+1;
read(a[i,j]);
end;
a[i,0]:=j-1;
if (sum<min) then
min:=sum;
end;
for i:=1 to n do
begin
t[i,0]:=true;
for j:=1 to a[i,0] do
begin
for k:=min downto 0 do
if (t[i,k]) then
begin
t[i,k+a[i,j]]:=true;
end;
end;
end;
for i:=1 to n do
for j:=0 to min do
if (t[i,j]) then
c[j]:=c[j]+1;
for i:=min downto 0 do
if (c[i]=n) then
begin
writeln(i);
halt;
end;
end.
i,j,k,n,min,sum:longint;
a:array[0..100,0..100]of longint;
t:array[0..100,0..20000]of boolean;
c:array[0..20000]of longint;
begin
read(n);
min:=maxlongint;
for i:=1 to n do
begin
j:=0;
sum:=0;
while (a[i,j]<>-1) do
begin
sum:=sum+a[i,j];
j:=j+1;
read(a[i,j]);
end;
a[i,0]:=j-1;
if (sum<min) then
min:=sum;
end;
for i:=1 to n do
begin
t[i,0]:=true;
for j:=1 to a[i,0] do
begin
for k:=min downto 0 do
if (t[i,k]) then
begin
t[i,k+a[i,j]]:=true;
end;
end;
end;
for i:=1 to n do
for j:=0 to min do
if (t[i,j]) then
c[j]:=c[j]+1;
for i:=min downto 0 do
if (c[i]=n) then
begin
writeln(i);
halt;
end;
end.