import java.io.*; import java.util.*; import java.text.*; import java.math.*; import java.util.regex.*; public class Solution { static void printShortestPath(int n, int i_start, int j_start, int i_end, int j_end) { // Print the distance along with the sequence of moves. int visited[][]=new int[n][n]; Queue q=new LinkedList(); int parentx[][]=new int[n][n]; int parenty[][]=new int[n][n]; int distance[][]=new int[n][n]; int i=0,j=0; for(i=0;i=0 && cx=0 && cydt) { distance[cx][cy]=dt; parentx[cx][cy]=x; parenty[cx][cy]=y; //System.out.println("Parent of "+cx+","+cy+" is "+x+" , "+y); q.add(cx); q.add(cy); } } } } } if(g==0) { System.out.println("Impossible"); return; } int x=i_end,y=j_end; System.out.println(distance[x][y]); //System.out.println(x+" "+y); //int dst=distance[x][y]; ArrayList path=new ArrayList(); while( (x!=i_start || y!=j_start) && (x>=0 && y>=0 && x=0;--i) { System.out.print(path.get(i)+" "); } } public static void main(String[] args) { Scanner in = new Scanner(System.in); int n = in.nextInt(); int i_start = in.nextInt(); int j_start = in.nextInt(); int i_end = in.nextInt(); int j_end = in.nextInt(); printShortestPath(n, i_start, j_start, i_end, j_end); in.close(); } }