#include <iostream>
#include <memory>
using p1 = std::unique_ptr<int>;
using p2 = std::unique_ptr<int, void(*)(int*)>;
struct intdeleter {
void operator()(int* t) const {
delete t;
}
};
using p3 = std::unique_ptr<int, intdeleter>;
int main()
{
std::cout << sizeof(p1) << " " << sizeof(p2) << " " << sizeof(p3) << std::endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bWVtb3J5PgoKdXNpbmcgcDEgPSBzdGQ6OnVuaXF1ZV9wdHI8aW50PjsKdXNpbmcgcDIgPSBzdGQ6OnVuaXF1ZV9wdHI8aW50LCB2b2lkKCopKGludCopPjsKCnN0cnVjdCBpbnRkZWxldGVyIHsKICAgIHZvaWQgb3BlcmF0b3IoKShpbnQqIHQpIGNvbnN0IHsKICAgICAgICBkZWxldGUgdDsKICAgIH0KfTsKdXNpbmcgcDMgPSBzdGQ6OnVuaXF1ZV9wdHI8aW50LCBpbnRkZWxldGVyPjsKCmludCBtYWluKCkKewogICAgc3RkOjpjb3V0IDw8IHNpemVvZihwMSkgPDwgIiAiIDw8IHNpemVvZihwMikgPDwgIiAiIDw8IHNpemVvZihwMykgPDwgc3RkOjplbmRsOwoKICAgIHJldHVybiAwOwp9