#include <iostream>
#include <string>

int *new_int(int val) {
  return new int(val);
}

struct baz
    {
        int h;
        int k;
        baz(int a, int b) : h(a), k(b) {}
    };

struct bar
	{
		int i;
		int* i_ptr;
        baz b;
        baz& b_ref;
		bar(int x) : i(x),i_ptr(new int(x+1)),b(i+3,i+5),b_ref(b) {}
	};
	
struct foo
	{
		int a;
		int* a_ptr;
		bar b;
		
		foo(int x) : a(x),
		a_ptr(new_int(x+1)),
		b(2*x) {}
		
	};

foo *new_foo(int x) {
  return new foo(x);
}

	
int main(int argc, char** argv)
{
	foo foo1(12);
	foo foo2(121);
	foo * newd_foo = new_foo(1);
	delete newd_foo;
	foo2.a = 7777; // Stop here
	*(foo2.b.i_ptr) = 8888;
    foo2.b.b.h = 9999;
	
	*(foo1.a_ptr) = 9999;
	foo1.b.i = 9999;
	
	int numbers[5] = {1,2,3,4,5};

	return 0; // Done initializing

}
