#include <stdio.h>
#include <omp.h>

int main (int argc, char *argv[])
{
  int nt; sscanf (argv[1], "%d", &nt);

  int sum = 0;
  #pragma omp parallel num_threads(nt)
  {
    int n = omp_get_thread_num ();
    #pragma omp single
      printf ("single(%d): start\n", n);
    #pragma omp atomic
      sum = sum + n;
    #pragma omp single nowait
      printf ("single(%d): stop\n", n);
    printf ("%d: %d\n", n, sum);
  }
  printf ("\n%d\n", sum);
  return 0;
}