#include <iostream>
using namespace std;
struct Settings
{
private:
struct GeneralSettings {
int gi1, gi2;
} static _gs;
public:
int i1, i2;
GeneralSettings& gs;
Settings(int i1, int i2) : i1(i1), i2(i2), gs(_gs) {}
void do_something() const {
printf("%d %d %d %d\n", i1, i2, gs.gi1, gs.gi2);
}
};
Settings::GeneralSettings Settings::_gs;
int main()
{
Settings s1(0,1);
Settings s2(1,0);
s1.gs.gi1 = 1;
s2.gs.gi2 = 1;
s2.do_something();
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKc3RydWN0IFNldHRpbmdzCnsKcHJpdmF0ZToKCXN0cnVjdCBHZW5lcmFsU2V0dGluZ3MgewoJCWludCBnaTEsIGdpMjsKCX0gc3RhdGljIF9nczsKcHVibGljOgoJaW50IGkxLCBpMjsKCUdlbmVyYWxTZXR0aW5ncyYgZ3M7CglTZXR0aW5ncyhpbnQgaTEsIGludCBpMikgOiBpMShpMSksIGkyKGkyKSwgZ3MoX2dzKSB7fQoJCgl2b2lkIGRvX3NvbWV0aGluZygpIGNvbnN0IHsKCQlwcmludGYoIiVkICVkICVkICVkXG4iLCBpMSwgaTIsIGdzLmdpMSwgZ3MuZ2kyKTsKCX0KfTsKClNldHRpbmdzOjpHZW5lcmFsU2V0dGluZ3MgU2V0dGluZ3M6Ol9nczsKCmludCBtYWluKCkKewogIFNldHRpbmdzIHMxKDAsMSk7CiAgU2V0dGluZ3MgczIoMSwwKTsKCiAgczEuZ3MuZ2kxID0gMTsKICBzMi5ncy5naTIgPSAxOwoKICBzMi5kb19zb21ldGhpbmcoKTsKfQ==