#include
using namespace std;
class X;
class Y
{
public:
void g(X *p)
{
p->i+=1;
}
};
class Z
{
public:
void f(X *p)
{
p->i+=5;
}
};
class X
{
int i;
public:
X(int ii)
{
i=ii;
}
friend class Z;
friend void Y::g(X *p);
friend void h(X *p)
{
p->i+=10;
}
void show(){cout<<"i="<<i<<endl;}
};
int main()
{
X x(1);
Y y;
Z z;
h(&x);
x.show();
y.g(&x);
x.show();
z.f(&x);
x.show();
return 0;
}