#define swap(t, x, y) { t _z; \
_z = y ; \
y = x; \
x = _z; }
#define swap(t, x, y) { t _z; \
_z = y ; \
y = x; \
x = _z; }