#include <type_traits>
#include <cstdint>
#include <string>
template <class T, class E = void>
struct Archiver {
void archive(T obj);
};
template <class T>
struct Archiver<T, typename std::enable_if<std::is_class<T>::value && !std::is_pod<T>::value>::type>
{
void archive(const T & obj);
};
template <> void Archiver<std::uint8_t>::archive(std::uint8_t obj);
template <> void Archiver<std::string>::archive(const std::string & obj);
int main() {}
I2luY2x1ZGUgPHR5cGVfdHJhaXRzPgojaW5jbHVkZSA8Y3N0ZGludD4KI2luY2x1ZGUgPHN0cmluZz4KCnRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBFID0gdm9pZD4Kc3RydWN0IEFyY2hpdmVyIHsKICAgIHZvaWQgYXJjaGl2ZShUIG9iaik7Cn07Cgp0ZW1wbGF0ZSA8Y2xhc3MgVD4Kc3RydWN0IEFyY2hpdmVyPFQsIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfY2xhc3M8VD46OnZhbHVlICYmICFzdGQ6OmlzX3BvZDxUPjo6dmFsdWU+Ojp0eXBlPgp7CiAgICB2b2lkIGFyY2hpdmUoY29uc3QgVCAmIG9iaik7Cn07Cgp0ZW1wbGF0ZSA8PiB2b2lkIEFyY2hpdmVyPHN0ZDo6dWludDhfdD46OmFyY2hpdmUoc3RkOjp1aW50OF90IG9iaik7CnRlbXBsYXRlIDw+IHZvaWQgQXJjaGl2ZXI8c3RkOjpzdHJpbmc+OjphcmNoaXZlKGNvbnN0IHN0ZDo6c3RyaW5nICYgb2JqKTsKCmludCBtYWluKCkge30=