function flow(sx,sy) {
let minnbr = (x,y) => [[-1,0],[1,0],[0,-1],[0,1],[0,0]].map(([nx,ny]) => [(grid[x+nx] || [])[y+ny], [x+nx,y+ny]]).filter(e=>e[0]!=undefined).reduce((a,b) => a[0] < b[0] ? a : b)
let walk = [[sx,sy]];
let x = sx, y = sy;
let min = minnbr(x,y);
while (min[1].toString() != [x,y].toString()) {
[x,y] = min[1];
walk.push(min[1])
min = minnbr(x,y);
}
return walk;
}