import java.util.ArrayDeque;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Stack;
class Point{
private final int x;
private final int y;
public int getX() {
return x;
}
public int getY() {
return y;
}
public Point(int x,int y){
this.x = x;
this.y = y;
}
public String makeString(){
char[] cArray = new char[2];
cArray[0] = (char) ('0' + x);
cArray[1] = (char) ('0' + y);
return new String(cArray);
}
public Point add(int aX,int aY){
return new Point(x+aX,y+aY);
}
public Point add(Point p){
return new Point(x + p.getX(),y+p.getY());
}
}
class Node{
private Point nodePoint;
private List<Node> children;
private Node parent;
public N