#include <cstdio>
struct float3 {
float x, y, z;
float3(float x, float y, float z) : x(x), y(y), z(z) {}
float3 operator()(int i, int j, int k) {return float3(_(i), _(j), _(k));}
float operator()(int i) {return _(i);}
float _(int i) {return *(&x + i % 3);}
};
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(2, 1, 0);
p(a), p(b);
return 0;
}
I2luY2x1ZGUgPGNzdGRpbz4Kc3RydWN0IGZsb2F0MyB7CiAgICBmbG9hdCB4LCB5LCB6OwogICAgZmxvYXQzKGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHopIDogeCh4KSwgeSh5KSwgeih6KSB7fQogICAgZmxvYXQzIG9wZXJhdG9yKCkoaW50IGksIGludCBqLCBpbnQgaykge3JldHVybiBmbG9hdDMoXyhpKSwgXyhqKSwgXyhrKSk7fQogICAgZmxvYXQgb3BlcmF0b3IoKShpbnQgaSkge3JldHVybiBfKGkpO30KICAgIGZsb2F0IF8oaW50IGkpIHtyZXR1cm4gKigmeCArIGkgJSAzKTt9Cn07CnZvaWQgcChmbG9hdDMgJmEpIHsKICAgIHN0ZDo6cHJpbnRmKCIlZiAlZiAlZlxuIiwgYS54LCBhLnksIGEueik7Cn0KaW50IG1haW4oKSB7CiAgICBmbG9hdDMgYSgxMCwgMTEsIDEyKSwgYiA9IGEoMiwgMSwgMCk7CiAgICBwKGEpLCBwKGIpOwogICAgcmV0dXJuIDA7Cn0K