#include <iostream>
struct Point {
int x_, y_;
Point(int x, int y) : x_(x), y_(y) {}
};
struct Vector {
int x_, y_;
Vector(int x, int y) : x_(x), y_(y) {}
};
std::ostream& operator<<(std::ostream& os, Point const& p)
{
return os << '(' << p.x_ << ',' << p.y_ << ')';
}
std::ostream& operator<<(std::ostream& os, Vector const& v)
{
return os << '(' << v.x_ << ',' << v.y_ << ')';
}
int main() {
Point p(3, 3);
Vector v(2, -4);
Point p2(p.x_ - v.x_, p.y_ - v.y_);
std::cout << "Point p: " << p << '\n';
std::cout << "Vector v: " << v << '\n';
std::cout << "Point p2: " << p2 << '\n';
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKc3RydWN0IFBvaW50IHsKICAgIGludCB4XywgeV87CiAgICBQb2ludChpbnQgeCwgaW50IHkpIDogeF8oeCksIHlfKHkpIHt9Cn07CgpzdHJ1Y3QgVmVjdG9yIHsKICAgIGludCB4XywgeV87CiAgICBWZWN0b3IoaW50IHgsIGludCB5KSA6IHhfKHgpLCB5Xyh5KSB7fQp9OwoKc3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSYgb3MsIFBvaW50IGNvbnN0JiBwKQp7CiAgICByZXR1cm4gb3MgPDwgJygnIDw8IHAueF8gPDwgJywnIDw8IHAueV8gPDwgJyknOwp9CgpzdGQ6Om9zdHJlYW0mIG9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtJiBvcywgVmVjdG9yIGNvbnN0JiB2KQp7CiAgICByZXR1cm4gb3MgPDwgJygnIDw8IHYueF8gPDwgJywnIDw8IHYueV8gPDwgJyknOwp9CgppbnQgbWFpbigpIHsKICAgIFBvaW50IHAoMywgMyk7CiAgICBWZWN0b3IgdigyLCAtNCk7CiAgICBQb2ludCBwMihwLnhfIC0gdi54XywgcC55XyAtIHYueV8pOwogICAgc3RkOjpjb3V0IDw8ICJQb2ludCBwOiAgIiA8PCBwIDw8ICdcbic7CiAgICBzdGQ6OmNvdXQgPDwgIlZlY3RvciB2OiAiIDw8IHYgPDwgJ1xuJzsKICAgIHN0ZDo6Y291dCA8PCAiUG9pbnQgcDI6ICIgPDwgcDIgPDwgJ1xuJzsKfQ==