#include <iostream>
using namespace std;
template <unsigned n> class row_base {
public: int data[n];
};
template <unsigned n, unsigned s> class row_exts : public row_base<s> {
};
template <unsigned s> class row_exts <1,s> : public row_base<s> {
public: int &x(void) {
return this->data[0];
}
};
template <unsigned s> class row_exts <2,s> : public row_exts<1,s> {
public: int &y(void) {
return this->data[1];
}
};
template <unsigned n> class row : public row_exts<n,n> {};
int main() {
row <2> a;
a.x() = 42;
a.y() = -1;
cout << a.x() << ' ' << a.y();
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnRlbXBsYXRlIDx1bnNpZ25lZCBuPiBjbGFzcyByb3dfYmFzZSB7CglwdWJsaWM6IGludCBkYXRhW25dOwp9OwoKdGVtcGxhdGUgPHVuc2lnbmVkIG4sIHVuc2lnbmVkIHM+IGNsYXNzIHJvd19leHRzIDogcHVibGljIHJvd19iYXNlPHM+IHsKfTsKCnRlbXBsYXRlIDx1bnNpZ25lZCBzPiBjbGFzcyByb3dfZXh0cyA8MSxzPiA6IHB1YmxpYyByb3dfYmFzZTxzPiB7CglwdWJsaWM6IGludCAmeCh2b2lkKSB7CgkJcmV0dXJuIHRoaXMtPmRhdGFbMF07Cgl9Cn07Cgp0ZW1wbGF0ZSA8dW5zaWduZWQgcz4gY2xhc3Mgcm93X2V4dHMgPDIscz4gOiBwdWJsaWMgcm93X2V4dHM8MSxzPiB7CglwdWJsaWM6IGludCAmeSh2b2lkKSB7CgkJcmV0dXJuIHRoaXMtPmRhdGFbMV07Cgl9Cn07Cgp0ZW1wbGF0ZSA8dW5zaWduZWQgbj4gY2xhc3Mgcm93IDogcHVibGljIHJvd19leHRzPG4sbj4ge307CgppbnQgbWFpbigpIHsKCXJvdyA8Mj4gYTsKCQoJYS54KCkgPSA0MjsKCWEueSgpID0gLTE7Cgljb3V0IDw8IGEueCgpIDw8ICcgJyA8PCBhLnkoKTsKCQoJcmV0dXJuIDA7Cn0=