#include <iostream>
#include <vector>
using namespace std;
template <typename T> void duplicate(vector <T> &v)
{
size_t n = v.size();
v.resize(n << 1);
for (size_t q=n-1; ~q; --q)
{
v[(q<<1)|1] = v[q];
v[q<<1] = move(v[q]); // should work for 0
}
}
int main(int argc, const char * argv[])
{
vector<int> v { 1,2,3,4,5,6,7,8,9,10 };
for(auto i: v) cout << i << " "; cout << endl;
duplicate(v);
for(auto i: v) cout << i << " "; cout << endl;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnRlbXBsYXRlIDx0eXBlbmFtZSBUPiB2b2lkIGR1cGxpY2F0ZSh2ZWN0b3IgPFQ+ICZ2KQp7CiAgc2l6ZV90IG4gPSB2LnNpemUoKTsKICB2LnJlc2l6ZShuIDw8IDEpOwoKICBmb3IgKHNpemVfdCBxPW4tMTsgfnE7IC0tcSkKICB7CiAgICB2WyhxPDwxKXwxXSA9IHZbcV07CiAgICB2W3E8PDFdID0gbW92ZSh2W3FdKTsgLy8gc2hvdWxkIHdvcmsgZm9yIDAKICB9Cn0KCmludCBtYWluKGludCBhcmdjLCBjb25zdCBjaGFyICogYXJndltdKQp7CiAgdmVjdG9yPGludD4gdiB7IDEsMiwzLDQsNSw2LDcsOCw5LDEwIH07CiAgZm9yKGF1dG8gaTogdikgY291dCA8PCBpIDw8ICIgICI7IGNvdXQgPDwgZW5kbDsKICBkdXBsaWNhdGUodik7CiAgZm9yKGF1dG8gaTogdikgY291dCA8PCBpIDw8ICIgICI7IGNvdXQgPDwgZW5kbDsKfQ==