#ifdef __cplusplus
extern "C"
#endif
void abort (void);

int a[2];
long long int b[7] = { 9, 11, 1, 1, 1, 13, 15 };
int e[3] = { 5, 0, 5 };
int f[5] = { 6, 7, 0, 0, 9 };
int g[4] = { 1, 0, 0, 2 };
int h[3] = { 0, 1, 4 };
int k[4][2] = { { 5, 6 }, { 0, 0 }, { 0, 0 }, { 7, 8 } };
long long *s;
long long (*t)[2];

void
foo (int n, int *c, long long int *d, int m[3], int *r, int o[4], int *p, int q[4][2])
{
  int i;
  for (i = 0; i < 2; i++)
    #pragma omp task in_reduction (+: a, c[:2]) in_reduction (*: b[2 * n:3 * n], d[0:2]) \
		     in_reduction (+: o[n:n*2], m[1], k[1:2][:], p[0], f[2:2]) \
		     in_reduction (+: q[1:2][:], g[n:n*2], e[1], h[0], r[2:2]) \
		     in_reduction (*: s[1:2], t[2:2][:])
    {
      a[0] += 7;
      a[1] += 17;
      b[2] *= 2;
      b[4] *= 2;
      c[0] += 6;
      d[1] *= 2;
      e[1] += 19;
      f[2] += 21;
      f[3] += 23;
      g[1] += 25;
      g[2] += 27;
      h[0] += 29;
      k[1][0] += 31;
      k[2][1] += 33;
      m[1] += 19;
      r[2] += 21;
      r[3] += 23;
      o[1] += 25;
      o[2] += 27;
      p[0] += 29;
      q[1][0] += 31;
      q[2][1] += 33;
      s[1] *= 2;
      t[2][0] *= 2;
      t[3][1] *= 2;
    }
}

void
test (int n)
{
  int c[2] = { 0, 0 };
  int p[3] = { 0, 1, 4 };
  int q[4][2] = { { 5, 6 }, { 0, 0 }, { 0, 0 }, { 7, 8 } };
  long long ss[4] = { 5, 1, 1, 6 };
  long long tt[5][2] = { { 9, 10 }, { 11, 12 }, { 1, 1 }, { 1, 1 }, { 13, 14 } };
  s = ss;
  t = tt;
  #pragma omp parallel
  #pragma omp single
  {
    long long int d[] = { 1, 1 };
    int m[3] = { 5, 0, 5 };
    int r[5] = { 6, 7, 0, 0, 9 };
    int o[4] = { 1, 0, 0, 2 };
    #pragma omp taskgroup task_reduction (+: a, c) task_reduction (*: b[2 * n:3 * n], d) \
			  task_reduction (+: e[1], f[2:2], g[n:n*2], h[0], k[1:2][0:2]) \
			  task_reduction (+: o[n:n*2], m[1], q[1:2][:], p[0], r[2:2]) \
			  task_reduction (*: t[2:2][:], s[1:n + 1])
    {
      int i;
      for (i = 0; i < 4; i++)
	#pragma omp task in_reduction (+: a, c) in_reduction (*: b[2 * n:3 * n], d) \
			 in_reduction (+: o[n:n*2], q[1:2][:], p[0], m[1], r[2:2]) \
			 in_reduction (+: g[n:n * 2], e[1], k[1:2][:], h[0], f[2:2]) \
			 in_reduction (*: s[1:2], t[2:2][:])
	{
	  int j;
	  a[0] += 2;
	  a[1] += 3;
	  b[2] *= 2;
	  f[3] += 8;
	  g[1] += 9;
	  g[2] += 10;
	  h[0] += 11;
	  k[1][1] += 13;
	  k[2][1] += 15;
	  m[1] += 16;
	  r[2] += 8;
	  s[1] *= 2;
	  t[2][1] *= 2;
	  t[3][1] *= 2;
	  for (j = 0; j < 2; j++)
	    #pragma omp task in_reduction (+: a, c[:2]) \
			     in_reduction (*: b[2 * n:3 * n], d[n - 1:n + 1]) \
			     in_reduction (+: e[1], f[2:2], g[n:n*2], h[0], k[1:2][:2]) \
			     in_reduction (+: m[1], r[2:2], o[n:n*2], p[0], q[1:2][:2]) \
			     in_reduction (*: s[n:2], t[2:2][:])
	    {
	      m[1] += 6;
	      r[2] += 7;
	      q[1][0] += 17;
	      q[2][0] += 19;
	      a[0] += 4;
	      a[1] += 5;
	      b[3] *= 2;
	      b[4] *= 2;
	      f[3] += 18;
	      g[1] += 29;
	      g[2] += 18;
	      h[0] += 19;
	      s[2] *= 2;
	      t[2][0] *= 2;
	      t[3][0] *= 2;
	      foo (n, c, d, m, r, o, p, q);
	      r[3] += 18;
	      o[1] += 29;
	      o[2] += 18;
	      p[0] += 19;
	      c[0] += 4;
	      c[1] += 5;
	      d[0] *= 2;
	      e[1] += 6;
	      f[2] += 7;
	      k[1][0] += 17;
	      k[2][0] += 19;
	    }
	  r[3] += 8;
	  o[1] += 9;
	  o[2] += 10;
	  p[0] += 11;
	  q[1][1] += 13;
	  q[2][1] += 15;
	  b[3] *= 2;
	  c[0] += 4;
	  c[1] += 9;
	  d[0] *= 2;
	  e[1] += 16;
	  f[2] += 8;
	}
    }
    if (d[0] != 1LL << (8 + 4)
	|| d[1] != 1LL << 16
	|| m[0] != 5
	|| m[1] != 19 * 16 + 6 * 8 + 16 * 4
	|| m[2] != 5
	|| r[0] != 6
	|| r[1] != 7
	|| r[2] != 21 * 16 + 7 * 8 + 8 * 4
	|| r[3] != 23 * 16 + 18 * 8 + 8 * 4
	|| r[4] != 9
	|| o[0] != 1
	|| o[1] != 25 * 16 + 29 * 8 + 9 * 4
	|| o[2] != 27 * 16 + 18 * 8 + 10 * 4
	|| o[3] != 2)
      abort ();
  }
  if (a[0] != 7 * 16 + 4 * 8 + 2 * 4
      || a[1] != 17 * 16 + 5 * 8 + 3 * 4
      || b[0] != 9 || b[1] != 11
      || b[2] != 1LL << (16 + 4)
      || b[3] != 1LL << (8 + 4)
      || b[4] != 1LL << (16 + 8)
      || b[5] != 13 || b[6] != 15
      || c[0] != 6 * 16 + 4 * 8 + 4 * 4
      || c[1] != 5 * 8 + 9 * 4
      || e[0] != 5
      || e[1] != 19 * 16 + 6 * 8 + 16 * 4
      || e[2] != 5
      || f[0] != 6
      || f[1] != 7
      || f[2] != 21 * 16 + 7 * 8 + 8 * 4
      || f[3] != 23 * 16 + 18 * 8 + 8 * 4
      || f[4] != 9
      || g[0] != 1
      || g[1] != 25 * 16 + 29 * 8 + 9 * 4
      || g[2] != 27 * 16 + 18 * 8 + 10 * 4
      || g[3] != 2
      || h[0] != 29 * 16 + 19 * 8 + 11 * 4
      || h[1] != 1 || h[2] != 4
      || k[0][0] != 5 || k[0][1] != 6
      || k[1][0] != 31 * 16 + 17 * 8
      || k[1][1] != 13 * 4
      || k[2][0] != 19 * 8
      || k[2][1] != 33 * 16 + 15 * 4
      || k[3][0] != 7 || k[3][1] != 8
      || p[0] != 29 * 16 + 19 * 8 + 11 * 4
      || p[1] != 1 || p[2] != 4
      || q[0][0] != 5 || q[0][1] != 6
      || q[1][0] != 31 * 16 + 17 * 8
      || q[1][1] != 13 * 4
      || q[2][0] != 19 * 8
      || q[2][1] != 33 * 16 + 15 * 4
      || q[3][0] != 7 || q[3][1] != 8
      || ss[0] != 5
      || ss[1] != 1LL << (16 + 4)
      || ss[2] != 1LL << 8
      || ss[3] != 6
      || tt[0][0] != 9 || tt[0][1] != 10 || tt[1][0] != 11 || tt[1][1] != 12
      || tt[2][0] != 1LL << (16 + 8)
      || tt[2][1] != 1LL << 4
      || tt[3][0] != 1LL << 8
      || tt[3][1] != 1LL << (16 + 4)
      || tt[4][0] != 13 || tt[4][1] != 14)
    abort ();
}

int
main ()
{
  test (1);
  return 0;
}
