#include <stdio.h>
// #include <stdlib.h>
// #include <mpi.h>
// #define ARRAY_SIZE 1000
// int main(int argc, char** argv) {
// MPI_Init(&argc, &argv);
// int world_size, world_rank;
// MPI_Comm_size(MPI_COMM_WORLD, &world_size);
// MPI_Comm_rank(MPI_COMM_WORLD, &world_rank);
// int* array = NULL;
// int min_local = INT_MAX;
// int min_global = INT_MAX;
// if (world_rank == 0) {
// // Master process generates random numbers
// array = (int*)malloc(ARRAY_SIZE * sizeof(int));
// for (int i = 0; i < ARRAY_SIZE; ++i)
// array[i] = rand() % 1000;
// }
// // Broadcast array to all processes
// MPI_Bcast(array, ARRAY_SIZE, MPI_INT, 0, MPI_COMM_WORLD);
// // Each process finds local minimum
// for (int i = world_rank * (ARRAY_SIZE / world_size); i < (world_rank + 1) * (ARRAY_SIZE / world_size); ++i)
// if (array[i] < min_local)
// min_local = array[i];
// // Reduce all local minima to find global minimum
// MPI_Reduce(&min_local, &min_global, 1, MPI_INT, MPI_MIN, 0, MPI_COMM_WORLD);
// if (world_rank == 0)
// printf("Min number: %d\n", min_global);
// MPI_Finalize();
// return 0;
// }
I2luY2x1ZGUgPHN0ZGlvLmg+Ci8vICNpbmNsdWRlIDxzdGRsaWIuaD4KLy8gI2luY2x1ZGUgPG1waS5oPgoKLy8gI2RlZmluZSBBUlJBWV9TSVpFIDEwMDAKCi8vIGludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikgewovLyAgICAgTVBJX0luaXQoJmFyZ2MsICZhcmd2KTsKCi8vICAgICBpbnQgd29ybGRfc2l6ZSwgd29ybGRfcmFuazsKLy8gICAgIE1QSV9Db21tX3NpemUoTVBJX0NPTU1fV09STEQsICZ3b3JsZF9zaXplKTsKLy8gICAgIE1QSV9Db21tX3JhbmsoTVBJX0NPTU1fV09STEQsICZ3b3JsZF9yYW5rKTsKCi8vICAgICBpbnQqIGFycmF5ID0gTlVMTDsKLy8gICAgIGludCBtaW5fbG9jYWwgPSBJTlRfTUFYOwovLyAgICAgaW50IG1pbl9nbG9iYWwgPSBJTlRfTUFYOwoKLy8gICAgIGlmICh3b3JsZF9yYW5rID09IDApIHsKLy8gICAgICAgICAvLyBNYXN0ZXIgcHJvY2VzcyBnZW5lcmF0ZXMgcmFuZG9tIG51bWJlcnMKLy8gICAgICAgICBhcnJheSA9IChpbnQqKW1hbGxvYyhBUlJBWV9TSVpFICogc2l6ZW9mKGludCkpOwovLyAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgQVJSQVlfU0laRTsgKytpKQovLyAgICAgICAgICAgICBhcnJheVtpXSA9IHJhbmQoKSAlIDEwMDA7Ci8vICAgICB9CgovLyAgICAgLy8gQnJvYWRjYXN0IGFycmF5IHRvIGFsbCBwcm9jZXNzZXMKLy8gICAgIE1QSV9CY2FzdChhcnJheSwgQVJSQVlfU0laRSwgTVBJX0lOVCwgMCwgTVBJX0NPTU1fV09STEQpOwoKLy8gICAgIC8vIEVhY2ggcHJvY2VzcyBmaW5kcyBsb2NhbCBtaW5pbXVtCi8vICAgICBmb3IgKGludCBpID0gd29ybGRfcmFuayAqIChBUlJBWV9TSVpFIC8gd29ybGRfc2l6ZSk7IGkgPCAod29ybGRfcmFuayArIDEpICogKEFSUkFZX1NJWkUgLyB3b3JsZF9zaXplKTsgKytpKQovLyAgICAgICAgIGlmIChhcnJheVtpXSA8IG1pbl9sb2NhbCkKLy8gICAgICAgICAgICAgbWluX2xvY2FsID0gYXJyYXlbaV07CgovLyAgICAgLy8gUmVkdWNlIGFsbCBsb2NhbCBtaW5pbWEgdG8gZmluZCBnbG9iYWwgbWluaW11bQovLyAgICAgTVBJX1JlZHVjZSgmbWluX2xvY2FsLCAmbWluX2dsb2JhbCwgMSwgTVBJX0lOVCwgTVBJX01JTiwgMCwgTVBJX0NPTU1fV09STEQpOwoKLy8gICAgIGlmICh3b3JsZF9yYW5rID09IDApCi8vICAgICAgICAgcHJpbnRmKCJNaW4gbnVtYmVyOiAlZFxuIiwgbWluX2dsb2JhbCk7CgovLyAgICAgTVBJX0ZpbmFsaXplKCk7Ci8vICAgICByZXR1cm4gMDsKLy8gfQoK