#include "omp.h"
#define N 10

typedef  struct {
  int b[N][N];
} H;

typedef struct {
  int a[N][N];
  H * h;
} T;

int main()  {
  T s;
  H h;
  T *p, *q;
  
  p = &s; q = p;  
  p->h = &h;
#pragma omp parallel for firstprivate(p, q) shared(s)
  for (int i = 0; i < N-1; i++) 
    for (int j = 0; j < N; j++) {
      p->h->b[i][j] = q->h->b[i + 1][j];
    }
}
