#include <iostream>
#include <cstring>
using namespace std;
#define YEAR 1
#define MONTH 2
#define DAY 3
int& date(int val)
{
static int d[3];
return d[val-1];
}
void set_date(int r, int m, int d)
{
int &x = date(YEAR); //?
int f[3] = {r,m,d};
memcpy((void *)&x, (const void *)f, (sizeof(int)*3));
}
int main()
{
date(YEAR) = 2013;
date(MONTH) = 4;
date(DAY) = 1;
cout << date(YEAR) << endl;
cout << date(MONTH) << endl;
cout << date(DAY) << endl;
set_date(2000,1,2);
cout << date(YEAR) << endl;
cout << date(MONTH) << endl;
cout << date(DAY) << endl;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y3N0cmluZz4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAojZGVmaW5lIFlFQVIgMQojZGVmaW5lIE1PTlRIIDIKI2RlZmluZSBEQVkgMwogCmludCYgZGF0ZShpbnQgdmFsKQp7CiAgICAgc3RhdGljIGludCBkWzNdOwogICAgIHJldHVybiBkW3ZhbC0xXTsKfQogCnZvaWQgc2V0X2RhdGUoaW50IHIsIGludCBtLCBpbnQgZCkKewogICAgIGludCAmeCA9IGRhdGUoWUVBUik7ICAgICAgLy8/CiAgICAgaW50IGZbM10gPSB7cixtLGR9OwogICAgIG1lbWNweSgodm9pZCAqKSZ4LCAoY29uc3Qgdm9pZCAqKWYsIChzaXplb2YoaW50KSozKSk7CiAgICAgCiAgICAgCn0KIAppbnQgbWFpbigpCnsKICAgIGRhdGUoWUVBUikgPSAyMDEzOyAgICAgICAgCiAgICBkYXRlKE1PTlRIKSA9IDQ7ICAgICAgICAKICAgIGRhdGUoREFZKSA9IDE7ICAgICAgICAKICAgIGNvdXQgPDwgZGF0ZShZRUFSKSA8PCBlbmRsOwogICAgY291dCA8PCBkYXRlKE1PTlRIKSA8PCBlbmRsOwogICAgY291dCA8PCBkYXRlKERBWSkgPDwgZW5kbDsKICAgIHNldF9kYXRlKDIwMDAsMSwyKTsKICAgIGNvdXQgPDwgZGF0ZShZRUFSKSA8PCBlbmRsOwogICAgY291dCA8PCBkYXRlKE1PTlRIKSA8PCBlbmRsOwogICAgY291dCA8PCBkYXRlKERBWSkgPDwgZW5kbDsKIAp9