#include <stdio.h>
#include <stdlib.h>

#include "omp.h"


int main (void) {
     int N, var, i;

#pragma omp parallel default(none), shared(N,stdin,stderr), \
    private(var,i)
    while (1) {
#pragma omp barrier   /* The barrier is essential */
#pragma omp master
{ /* This matters */
        printf("Please type a positive integer\n");
        if (scanf("%d",&N) != 1 || N < 1) {
            if (feof(stdin)) exit(EXIT_SUCCESS);    /* This is allowed */
            fprintf(stderr,"Invalid integer\n");
            exit(EXIT_FAILURE);

        }
} /* This matters */
#pragma omp barrier   /* The barrier is essential */
        var = N;
        for (i = 0; i < omp_get_thread_num()+5000*5000; ++i)
            var = (5*var+1)%1024;
#pragma omp critical
        printf("result = %d\n",var);
    } /* This is the end of the parallel region */
    return EXIT_SUCCESS;
}
