process.stdin.resume(); process.stdin.setEncoding('ascii'); var input_stdin = ""; var input_stdin_array = ""; var input_currentline = 0; process.stdin.on('data', function (data) { input_stdin += data; }); process.stdin.on('end', function () { input_stdin_array = input_stdin.split("\n"); main(); }); function readLine() { return input_stdin_array[input_currentline++]; } /////////////// ignore above this line //////////////////// function getPossiblePositions(xd, yd, x, y, n){ let possibilities = []; possibilities.push([x-xd, y-yd]); possibilities.push([x+xd, y-yd]); possibilities.push([x-xd, y+yd]); possibilities.push([x+xd, y+yd]); possibilities.push([x-yd, y-xd]); possibilities.push([x+yd, y-xd]); possibilities.push([x-yd, y+xd]); possibilities.push([x+yd, y+xd]); return possibilities.filter(point => point[0] >=0 && point[1] >=0 && point[0] < n && point[1] < n); } function getMoves(i, j, n){ let triedPositions = {}; let positions = [[0,0]]; let moves = 0; let foundMin = false; while(!foundMin){ let newPositions = []; positions.forEach(function(position){ getPossiblePositions(i, j, position[0], position[1], n).forEach(function(newPos){ if(newPos[0]==n-1 && newPos[1] ==n-1){ foundMin=true; } if(!triedPositions[newPos[0]+','+newPos[1]]){ newPositions.push(newPos); triedPositions[newPos[0]+','+newPos[1]] = true; } }) }) positions = newPositions; moves++; if(!positions.length){ foundMin=true; moves = -1; } } return moves; } function main() { var n = parseInt(readLine()); for(var i=1; i