#include <stdio.h>
class IntP {
public:
int* mpPtr;
IntP(int* a) :mpPtr(a) {}
IntP& operator++() {
++mpPtr;
return *this;
}
int& operator*()const {
return *mpPtr;
}
};
int main() {
int a[3] = { 0, 1, 2 };
int b[3] = { 0, 1, 2 };
int *pa = a;
IntP pb = b;
*(++pa) = *(++pa);
*(++pb) = *(++pb);
printf("a=(%u, %u, %u)\n", a[0], a[1], a[2]);
printf("b=(%u, %u, %u)\n", b[0], b[1], b[2]);
}
I2luY2x1ZGUgPHN0ZGlvLmg+CmNsYXNzIEludFAgewpwdWJsaWM6CiAgICBpbnQqIG1wUHRyOwogICAgSW50UChpbnQqIGEpIDptcFB0cihhKSB7fQogICAgCiAgICBJbnRQJiBvcGVyYXRvcisrKCkgewogICAgICAgICsrbXBQdHI7CiAgICAgICAgcmV0dXJuICp0aGlzOwogICAgfQogICAgaW50JiBvcGVyYXRvciooKWNvbnN0IHsKICAgICAgICByZXR1cm4gKm1wUHRyOwogICAgfQp9OwoKaW50IG1haW4oKSB7CiAgICBpbnQgYVszXSA9IHsgMCwgMSwgMiB9OwogICAgaW50IGJbM10gPSB7IDAsIDEsIDIgfTsKCiAgICBpbnQgKnBhID0gYTsKICAgIEludFAgcGIgPSBiOwoKICAgICooKytwYSkgPSAqKCsrcGEpOwogICAgKigrK3BiKSA9ICooKytwYik7CgogICAgcHJpbnRmKCJhPSgldSwgJXUsICV1KVxuIiwgYVswXSwgYVsxXSwgYVsyXSk7CiAgICBwcmludGYoImI9KCV1LCAldSwgJXUpXG4iLCBiWzBdLCBiWzFdLCBiWzJdKTsKfQo=