#include <iostream>
#include <bitset>
void split_bitset( std::bitset<56> &p, std::bitset<28> &left, std::bitset<28> &right ) {
uint64_t uikey = p.to_ullong();
left = uikey >> 28;
right = uikey & 0xFFFFFFF;
}
int main() {
std::bitset<56> permutationKey(0x133457799BBCDF);
std::bitset<28> leftKey;
std::bitset<28> rightKey;
split_bitset(permutationKey,leftKey,rightKey);
std::cout << permutationKey << '\n' << leftKey << '\n' << rightKey << '\n';
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Yml0c2V0PgoKdm9pZCBzcGxpdF9iaXRzZXQoIHN0ZDo6Yml0c2V0PDU2PiAmcCwgc3RkOjpiaXRzZXQ8Mjg+ICZsZWZ0LCBzdGQ6OmJpdHNldDwyOD4gJnJpZ2h0ICkgewoJdWludDY0X3QgdWlrZXkgPSBwLnRvX3VsbG9uZygpOwoJCglsZWZ0ID0gdWlrZXkgPj4gMjg7CglyaWdodCA9IHVpa2V5ICYgMHhGRkZGRkZGOwp9CgppbnQgbWFpbigpIHsKCglzdGQ6OmJpdHNldDw1Nj4gcGVybXV0YXRpb25LZXkoMHgxMzM0NTc3OTlCQkNERik7CglzdGQ6OmJpdHNldDwyOD4gbGVmdEtleTsKCXN0ZDo6Yml0c2V0PDI4PiByaWdodEtleTsKCglzcGxpdF9iaXRzZXQocGVybXV0YXRpb25LZXksbGVmdEtleSxyaWdodEtleSk7CglzdGQ6OmNvdXQgPDwgcGVybXV0YXRpb25LZXkgPDwgJ1xuJyA8PCBsZWZ0S2V5IDw8ICdcbicgPDwgcmlnaHRLZXkgPDwgJ1xuJzsKCXJldHVybiAwOwp9