program linear; const s=1000; var a:array[0..1000]of longint; b:array[0..1000]of integer; p:array[0..1600]of integer; n,m,i,j,k,c,f:integer; st:byte; v:longint; t,g:boolean; procedure wr(x:word); begin if (f<>0) then write(' ') else f:=1; write(a[x]); if b[x]>1 then write('/',b[x]); end; function nod(x,y:longint):longint; var z:longint; begin if(x=0)or(y=0)then nod:=x+y else begin repeat z:=y; y:=x mod y; x:=z; until y=0; nod:=x; end; end; procedure mnoj(x:word); begin a[x]:=a[x]*b[s]; b[x]:=b[x]*a[s]; v:=nod(abs(a[x]),b[x]); if v<>1 then begin a[x]:=a[x]div v; b[x]:=b[x]div v; end; end; procedure minus(x,y:word); begin a[x]:=a[x]*b[y]-a[y]*b[x]; b[x]:=b[x]*b[y]; if a[x]=0 then b[x]:=1 else begin v:=nod(abs(a[x]),b[x]); if v<>1 then begin a[x]:=a[x]div v; b[x]:=b[x]div v; end; end; end; begin f:=0; assign(input,'input.txt'); reset(input); read(n,m); inc(m); for i:=0 to m*n-1 do begin read(a[i]); b[i]:=1; end; close(input); for i:=0 to n-1 do p[i]:=i; st:=0; k:=0; c:=0;{number of lines,variables} repeat t:=false; i:=k-1; repeat inc(i)until(i=n)or(a[p[i]*m+c]<>0); if i=n then st:=1 else begin t:=true; if i>k then begin j:=p[k]; p[k]:=p[i]; p[i]:=j; end; {if a[p[k]*m+c]<0 then for j:=c to m-1 do a[p[k]*m+j]:=-a[p[k]*m+j];} i:=k-1; repeat inc(i); if (a[p[i]*m+c]<>0)then begin g:=not((a[p[i]*m+c]=1)and(b[p[i]*m+c]=1)); a[s]:=a[p[i]*m+c]; b[s]:=b[p[i]*m+c]; if a[s]<0 then begin a[s]:=-a[s]; b[s]:=-b[s]; end; if g or(i>k)then for j:=c to m-1 do begin if g then mnoj(p[i]*m+j); if i>k then minus(p[i]*m+j,p[k]*m+j); end; g:=true; for j:=c to m-2 do if a[p[i]*m+j]<>0 then begin g:=false; break; end; if g then begin if a[p[i]*m+m-1]=0 then begin dec(n); if i=n-1); end; if st=2 then break; if(st=1)and(not t)then inc(c); if(st=0)or t then begin inc(k); inc(c); end; until k>=n; if(st=0)and(c0 then begin for j:=m-1 downto c do if a[p[i]*m+j]<>0 then begin a[s]:=a[p[i]*m+j]*a[p[k]*m+c]; b[s]:=b[p[i]*m+j]*b[p[k]*m+c]; v:=nod(abs(a[s]),b[s]); if v>1 then begin a[s]:=a[s]div v; b[s]:=b[s]div v; end; minus(p[k]*m+j,s); end; end; end; if st=0 then begin for i:=0 to n-1 do wr(p[i]*m+m-1); writeln; end else for i:=0 to n-1 do begin for j:=0 to m-1 do wr(p[i]*m+j); writeln; end; end else writeln('No solution'); close(output); end.