#include <stdio.h>
#include <mpi.h>

int main(void) {
    int rank, size;
    MPI_Init(NULL, NULL);
    MPI_Comm_rank(MPI_COMM_WORLD, &rank);
    MPI_Comm_size(MPI_COMM_WORLD, &size);

    int right = (rank + 1) % size;
    int left = (rank - 1 + size) % size;
    int received = -1;

    MPI_Sendrecv(&rank, 1, MPI_INT, right, 0,
                 &received, 1, MPI_INT, left, 0,
                 MPI_COMM_WORLD, MPI_STATUS_IGNORE);

    printf("Rank %d received %d from rank %d\n", rank, received, left);

    MPI_Finalize();
    return 0;
}
