extern "C" void abort ();

int as[2];
int (&a)[2] = as;
long long int bs[7] = { 9, 11, 1, 1, 1, 13, 15 };
long long int (&b)[7] = bs;
int es[3] = { 5, 0, 5 };
int (&e)[3] = es;
int fs[5] = { 6, 7, 0, 0, 9 };
int (&f)[5] = fs;
int gs[4] = { 1, 0, 0, 2 };
int (&g)[4] = gs;
int hs[3] = { 0, 1, 4 };
int (&h)[3] = hs;
int ks[4][2] = { { 5, 6 }, { 0, 0 }, { 0, 0 }, { 7, 8 } };
int (&k)[4][2] = ks;
long long *ss;
long long *&s = ss;
long long (*ts)[2];
long long (*&t)[2] = ts;

template <typename T>
void
foo (T &n, T *&c, long long int *&d, T (&m)[3], T *&r, T (&o)[4], T *&p, T (&q)[4][2])
{
  T 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;
    }
}

template <typename T>
void
test (T &n)
{
  T cs[2] = { 0, 0 };
  T (&c)[2] = cs;
  T ps[3] = { 0, 1, 4 };
  T (&p)[3] = ps;
  T qs[4][2] = { { 5, 6 }, { 0, 0 }, { 0, 0 }, { 7, 8 } };
  T (&q)[4][2] = qs;
  long long sb[4] = { 5, 1, 1, 6 };
  long long tb[5][2] = { { 9, 10 }, { 11, 12 }, { 1, 1 }, { 1, 1 }, { 13, 14 } };
  T ms[3] = { 5, 0, 5 };
  T os[4] = { 1, 0, 0, 2 };
  s = sb;
  t = tb;
  #pragma omp parallel
  #pragma omp single
  {
    long long int ds[] = { 1, 1 };
    long long int (&d)[2] = ds;
    T (&m)[3] = ms;
    T rs[5] = { 6, 7, 0, 0, 9 };
    T (&r)[5] = rs;
    T (&o)[4] = os;
    #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])
    {
      T 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][ : ])
	{
	  T 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;
	      T *cp = c;
	      long long int *dp = d;
	      T *rp = r;
	      T *pp = p;
	      foo (n, cp, dp, m, rp, o, pp, 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
      || sb[0] != 5
      || sb[1] != 1LL << (16 + 4)
      || sb[2] != 1LL << 8
      || sb[3] != 6
      || tb[0][0] != 9 || tb[0][1] != 10 || tb[1][0] != 11 || tb[1][1] != 12
      || tb[2][0] != 1LL << (16 + 8)
      || tb[2][1] != 1LL << 4
      || tb[3][0] != 1LL << 8
      || tb[3][1] != 1LL << (16 + 4)
      || tb[4][0] != 13 || tb[4][1] != 14)
    abort ();
}

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