#include <mpi.h>
#include <assert.h>

int main(int argc, char * argv[]) {
  int rank, size;
  int buf;

  MPI_Init(&argc, &argv);
  MPI_Comm_rank(MPI_COMM_WORLD, &rank);
  MPI_Comm_size(MPI_COMM_WORLD, &size);
  if(size != 2) {
    MPI_Finalize();
    return 0;
  }
  if(rank == 0) {
    MPI_Send(&rank, 1, MPI_INT, 1, 0, MPI_COMM_WORLD);
    MPI_Recv(&buf, 1, MPI_INT, 1, 0, MPI_COMM_WORLD, MPI_STATUS_IGNORE);
    assert(buf == 1);
  } else {
    MPI_Send(&rank, 1, MPI_INT, 0, 0, MPI_COMM_WORLD);
    MPI_Recv(&buf, 1, MPI_INT, 0, 0, MPI_COMM_WORLD, MPI_STATUS_IGNORE);
    assert(buf == 0);
  }
  MPI_Finalize();
  return 0;
}
