#include <iostream>
using namespace std;
template <class T> class vec3
{
public:
vec3(T x = 0, T y = 0, T z = 0) :
x(x),
y(y),
z(z)
{
}
static const vec3 right;
static const vec3 up;
static const vec3 forward;
T x, y, z;
};
template <typename T> const vec3<T> vec3<T>::right(1, 0, 0);
template <typename T> const vec3<T> vec3<T>::up(0, 1, 0);
template <typename T> const vec3<T> vec3<T>::forward(0, 0, 1);
int main() {
vec3<int> vi;
vec3<float> vf;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdGVtcGxhdGUgPGNsYXNzIFQ+IGNsYXNzIHZlYzMKewpwdWJsaWM6CiAgICB2ZWMzKFQgeCA9IDAsIFQgeSA9IDAsIFQgeiA9IDApIDoKICAgICAgICB4KHgpLAogICAgICAgIHkoeSksCiAgICAgICAgeih6KQogICAgewogICAgfQoKICAgIHN0YXRpYyBjb25zdCB2ZWMzIHJpZ2h0OwogICAgc3RhdGljIGNvbnN0IHZlYzMgdXA7CiAgICBzdGF0aWMgY29uc3QgdmVjMyBmb3J3YXJkOwoKICAgIFQgeCwgeSwgejsKfTsKCnRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjb25zdCB2ZWMzPFQ+IHZlYzM8VD46OnJpZ2h0KDEsIDAsIDApOwp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY29uc3QgdmVjMzxUPiB2ZWMzPFQ+Ojp1cCgwLCAxLCAwKTsKdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNvbnN0IHZlYzM8VD4gdmVjMzxUPjo6Zm9yd2FyZCgwLCAwLCAxKTsKCgppbnQgbWFpbigpIHsKCXZlYzM8aW50PiB2aTsKCXZlYzM8ZmxvYXQ+IHZmOwp9