#include <iostream>
template <typename T>
class Vector {
T values [2];
public:
Vector (T first, T second){
values[0]=first; values[1]=second;
}
int &operator[](int index){
return values[index];
}
Vector<T> operator+(Vector<T> &other_vec){
return Vector<T> (values[0]+other_vec[0],values[1]+other_vec[1]);
}
Vector<T> operator-(Vector<T> &other_vec){
return Vector<T> (values[0]-other_vec[0],values[1]-other_vec[1]);
}
};
template <typename U>
Vector<U> operator*(Vector<U> &a, int &b){
return Vector<U> (a[0]*b, a[1]*b);
}
template <typename U>
Vector<U> operator*(int &b, Vector<U> &a){
return Vector<U> (a[0]*b, a[1]*b);
}
int main(){
Vector<int> test (1,2);
Vector<int> test2 (3,4);
int a = 5;
std::cout << test[0] << " " << test[1] << std::endl;
Vector<int> test3 = a*test;
std::cout << test3[0] << " " << test3[1] << std::endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CmNsYXNzIFZlY3RvciB7CiAgICBUIHZhbHVlcyBbMl07CglwdWJsaWM6CgkJVmVjdG9yIChUIGZpcnN0LCBUIHNlY29uZCl7CgkJCXZhbHVlc1swXT1maXJzdDsgdmFsdWVzWzFdPXNlY29uZDsKCQl9CgkJaW50ICZvcGVyYXRvcltdKGludCBpbmRleCl7CgkJCXJldHVybiB2YWx1ZXNbaW5kZXhdOwoJCX0KCQlWZWN0b3I8VD4gb3BlcmF0b3IrKFZlY3RvcjxUPiAmb3RoZXJfdmVjKXsKCQkJcmV0dXJuIFZlY3RvcjxUPiAodmFsdWVzWzBdK290aGVyX3ZlY1swXSx2YWx1ZXNbMV0rb3RoZXJfdmVjWzFdKTsKCQl9CgkJVmVjdG9yPFQ+IG9wZXJhdG9yLShWZWN0b3I8VD4gJm90aGVyX3ZlYyl7CgkJCXJldHVybiBWZWN0b3I8VD4gKHZhbHVlc1swXS1vdGhlcl92ZWNbMF0sdmFsdWVzWzFdLW90aGVyX3ZlY1sxXSk7CgkJfQp9OwoKdGVtcGxhdGUgPHR5cGVuYW1lIFU+ClZlY3RvcjxVPiBvcGVyYXRvciooVmVjdG9yPFU+ICZhLCBpbnQgJmIpewoJcmV0dXJuIFZlY3RvcjxVPiAoYVswXSpiLCBhWzFdKmIpOwp9CnRlbXBsYXRlIDx0eXBlbmFtZSBVPgpWZWN0b3I8VT4gb3BlcmF0b3IqKGludCAmYiwgVmVjdG9yPFU+ICZhKXsKCXJldHVybiBWZWN0b3I8VT4gKGFbMF0qYiwgYVsxXSpiKTsKfQoKaW50IG1haW4oKXsKCVZlY3RvcjxpbnQ+IHRlc3QgKDEsMik7CglWZWN0b3I8aW50PiB0ZXN0MiAoMyw0KTsKCWludCBhID0gNTsKCXN0ZDo6Y291dCA8PCB0ZXN0WzBdIDw8ICIgIiA8PCB0ZXN0WzFdIDw8IHN0ZDo6ZW5kbDsKCVZlY3RvcjxpbnQ+IHRlc3QzID0gYSp0ZXN0OwoJc3RkOjpjb3V0IDw8IHRlc3QzWzBdIDw8ICIgIiA8PCB0ZXN0M1sxXSA8PCBzdGQ6OmVuZGw7CgkKICAgIHJldHVybiAwOwp9