struct point {
point() {}
point(int x, int y) : x_(x), y_(y) {}
int x_, y_;
};
union u {
point p_;
int i_;
const char* s_;