#include <cstdio>
#include <cstring>
struct float3 {
float a[3], &x, &y, &z;
float3() : x(a[0] = 0), y(a[1] = 0), z(a[2] = 0) {}
float3(float x, float y, float z) : x(a[0] = x), y(a[1] = y), z(a[2] = z) {}
float3 operator()(int i, int j, int k) {return float3(_(i), _(j), _(k));}
float operator()(int i) {return _(i);}
float _(int i) {return a[i % 3];}
float3 &operator=(const float3 &r) {
std::memcpy(a, r.a, sizeof a);
return *this;
}
};
void p(float3 &a) {
std::printf("%f %f %f\n", a.x, a.y, a.z);
}
int main() {
float3 a(10, 11, 12), b = a(1, 1, 1), c;
c = a(2, 2, 2);
p(a), p(b), p(c);
return 0;
}
I2luY2x1ZGUgPGNzdGRpbz4KI2luY2x1ZGUgPGNzdHJpbmc+CnN0cnVjdCBmbG9hdDMgewogICAgZmxvYXQgYVszXSwgJngsICZ5LCAmejsKICAgIGZsb2F0MygpIDogeChhWzBdID0gMCksIHkoYVsxXSA9IDApLCB6KGFbMl0gPSAwKSB7fQogICAgZmxvYXQzKGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHopIDogeChhWzBdID0geCksIHkoYVsxXSA9IHkpLCB6KGFbMl0gPSB6KSB7fQogICAgZmxvYXQzIG9wZXJhdG9yKCkoaW50IGksIGludCBqLCBpbnQgaykge3JldHVybiBmbG9hdDMoXyhpKSwgXyhqKSwgXyhrKSk7fQogICAgZmxvYXQgb3BlcmF0b3IoKShpbnQgaSkge3JldHVybiBfKGkpO30KICAgIGZsb2F0IF8oaW50IGkpIHtyZXR1cm4gYVtpICUgM107fQogICAgZmxvYXQzICZvcGVyYXRvcj0oY29uc3QgZmxvYXQzICZyKSB7CglzdGQ6Om1lbWNweShhLCByLmEsIHNpemVvZiBhKTsKCXJldHVybiAqdGhpczsKICAgIH0KfTsKdm9pZCBwKGZsb2F0MyAmYSkgewogICAgc3RkOjpwcmludGYoIiVmICVmICVmXG4iLCBhLngsIGEueSwgYS56KTsKfQppbnQgbWFpbigpIHsKICAgIGZsb2F0MyBhKDEwLCAxMSwgMTIpLCBiID0gYSgxLCAxLCAxKSwgYzsKICAgIGMgPSBhKDIsIDIsIDIpOwogICAgcChhKSwgcChiKSwgcChjKTsKICAgIHJldHVybiAwOwp9Cg==