#include <iostream>
#include <queue>

using namespace std;

class Point {
private:
    int x, y;
    int niza[5];
public:
    Point() {}
    Point(int _x, int _y) {
        x = _x;
        y = _y;
    }
    ~Point() {}
    void print() {
        cout << x << " " << y << endl;
    }
    Point operator + (Point p) {
        Point temp;
        temp.x = x + p.x;
        temp.y = y + p.y;
        return temp;
    }
    Point operator - (Point p) {
        Point temp;
        temp.x = x - p.x;
        temp.y = y - p.y;
        return temp;
    }
    Point operator * (Point p) {
        Point temp;
        temp.x = x * p.x;
        temp.y = y * p.y;
        return temp;
    }
    Point operator / (Point p) {
        Point temp;
        temp.x = x / p.x;
        temp.y = y / p.y;
        return temp;
    }
    bool operator < (Point p) {
        if(x < p.x and y < p.y) {
            return true;
        }
        return false;
    }
    bool operator > (Point p) {
        if(x > p.x and y > p.y) {
            return true;
        }
        return false;
    }
    bool operator <= (Point p) {
        if(x <= p.x and y <= p.y) {
            return true;
        }
        return false;
    }
    bool operator >= (Point p) {
        if(x >= p.x and y >= p.y) {
            return true;
        }
        return false;
    }
    bool operator == (Point p) {
        if(x == p.x and y == p.y) {
            return true;
        }
        return false;
    }
    bool operator != (Point p) {
        if(x == p.x and y == p.y) {
            return true;
        }
        return false;
    }
    Point& operator += (Point p) {
        x += p.x;
        y += p.y;
        return *this;
    }
    Point& operator -= (Point p) {
        x -= p.x;
        y -= p.y;
        return *this;
    }
    Point& operator *= (Point p) {
        x *= p.x;
        y *= p.y;
        return *this;
    }
    Point& operator /= (Point p) {
        x /= p.x;
        y /= p.y;
        return *this;
    }
    Point& operator ++ (int p) { //postfix
        x++;
        y++;
        return *this;
    }
    Point& operator ++ () { // prefix
        ++x;
        ++y;
        return *this;
    }
    Point& operator -- (int p) { //postfix
        x--;
        y--;
        return *this;
    }
    Point& operator -- () {
        --x;
        --y;
        return *this;
    }
    Point& operator = (Point p) {
        x = p.x;
        y = p.y;
        return *this;
    }
    void set_niza(int a[5], int n) {
        for(int i = 0; i < n; i++) {
            niza[i] = a[i];
        }
    }
    int& operator [] (int indeks) {
        return niza[indeks];
    }
    friend ostream& operator << (ostream &stream, Point p);
    friend istream& operator >> (istream &stream, Point &p);
};
ostream& operator << (ostream &stream, Point p) {
    stream << "X: " << p.x << endl;
    stream << "Y: " << p.y << endl;
    return stream;
}
istream& operator >> (istream &stream, Point &p) {
    stream >> p.x;
    stream >> p.y;
    return stream;
}

int main()
{
    
    
    Point p1;
    cin >> p1;
    int a[5] = {1, 2, 3, 4, 5};
    p1.set_niza(a, 5);
    cout << p1[2] << endl;
    return 0;
}
