K=->a,b{A,B=a,b;(0...A*B).each{|i|Z[[i]]};p"NOT POSSIBLE"}
Z=->v{c=v.last
abort (0...v.size).map{|i|{:i=>i+1,:x=>v[i]}}.sort_by{|i|i[:x]}.map{|i|i[:i]}.each_slice(B).map{|r|r*' '}*?\n if v.size==A*B
([[1,2],[2,1],[-2,1],[-1,2],[-1,-2],[-2,-1],[2,-1],[1,-2]].map{|d|o=(c/B)+d[0]
u=(c%B)+d[1]
(o>=0&&0<=u&&A>o&&B>u)?o*B+u :-1}.flatten-[-1]-v).each{|i|Z[v+[i]]}}
K[3,4]
Sz0tPmEsYntBLEI9YSxiOygwLi4uQSpCKS5lYWNoe3xpfFpbW2ldXX07cCJOT1QgUE9TU0lCTEUifQpaPS0+dntjPXYubGFzdAphYm9ydCAoMC4uLnYuc2l6ZSkubWFwe3xpfHs6aT0+aSsxLDp4PT52W2ldfX0uc29ydF9ieXt8aXxpWzp4XX0ubWFwe3xpfGlbOmldfS5lYWNoX3NsaWNlKEIpLm1hcHt8cnxyKicgJ30qP1xuIGlmIHYuc2l6ZT09QSpCCihbWzEsMl0sWzIsMV0sWy0yLDFdLFstMSwyXSxbLTEsLTJdLFstMiwtMV0sWzIsLTFdLFsxLC0yXV0ubWFwe3xkfG89KGMvQikrZFswXQp1PShjJUIpK2RbMV0KKG8+PTAmJjA8PXUmJkE+byYmQj51KT9vKkIrdSA6LTF9LmZsYXR0ZW4tWy0xXS12KS5lYWNoe3xpfFpbditbaV1dfX0KCktbMyw0XQ==