int up(int xy[2]){
    int yd=xy[1]-1,newrank;
    if (yd==-1)return -2;
    int coords[2];
    coords[0]=xy[0];coords[1]=yd;
    MPI_Cart_rank(A_New_MPI_World,coords,&newrank);
    return newrank;
}
 
int down(int xy[2]){
    int yd=xy[1]+1,newrank;
    if (yd==dim[1])return -2;
    int coords[2];
    coords[0]=xy[0];coords[1]=yd;
    MPI_Cart_rank(A_New_MPI_World,coords,&newrank);
    return newrank;
}
 
int left(int xy[2]){
    int xd=xy[0]-1,newrank,coords[2];
    if (xd==-1) {
        coords[0]=dim[0]-1;coords[1]=xy[1];
    } else {
        coords[0]=xd;coords[1]=xy[1];
    }
    MPI_Cart_rank(A_New_MPI_World,coords,&newrank);
    return newrank;
}
 
int right(int xy[2]){
    int xd=xy[0]+1,newrank,coords[2];
    if (xd==dim[0]) {
        coords[0]=0;coords[1]=xy[1];
    } else {
        coords[0]=xd;coords[1]=xy[1];
    }
    MPI_Cart_rank(A_New_MPI_World,coords,&newrank);
    return newrank;
}