struct A {
    int a;
};

void main() {
    int* a = new int[4];
    float* b = new float[4];
    bool* c = new bool[4];
    A* d = new A[4];
    int** e = new int*[4];
    float** f = new float*[4];
    bool** g = new bool*[4];
    A** h = new A*[4];
    
    a[2] = 243;
    b[2] = 23.5;
    c[2] = true;
    d[2].a = 64560;
    e[2] = &a[2];
    f[2] = &b[2];
    g[2] = &c[2];
    h[2] = &d[2];
    
    h[2]->a += 2;
    (*h[2]).a += 2;
    
    test(a[2]);
    test(b[2]);
    test(c[2]);
    test(d[2].a);
    test(*e[2]);
    test(*f[2]);
    test(*g[2]);
    test((*h[2]).a);
}