#include <iostream>
#include <list>
using namespace std;
void rev(list<int>& l, int pb, int pe)
{
list<int> tmp;
auto b = l.begin();
tmp.splice(tmp.end(),l,next(b,pb),next(b,pe+1));
tmp.reverse();
l.splice(next(b,pb),tmp);
}
int main(int argc, char * argv[])
{
list<int> l = {0,1,2,3,4,5,6,7,8,9};
for(auto i: l) cout << i << " "; cout << endl;
rev(l,4,6);
for(auto i: l) cout << i << " "; cout << endl;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bGlzdD4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp2b2lkIHJldihsaXN0PGludD4mIGwsIGludCBwYiwgaW50IHBlKQp7CiAgICBsaXN0PGludD4gdG1wOwogICAgYXV0byBiID0gbC5iZWdpbigpOwogICAgdG1wLnNwbGljZSh0bXAuZW5kKCksbCxuZXh0KGIscGIpLG5leHQoYixwZSsxKSk7CiAgICB0bXAucmV2ZXJzZSgpOwogICAgbC5zcGxpY2UobmV4dChiLHBiKSx0bXApOwp9CgppbnQgbWFpbihpbnQgYXJnYywgY2hhciAqIGFyZ3ZbXSkKewogICAgbGlzdDxpbnQ+IGwgPSB7MCwxLDIsMyw0LDUsNiw3LDgsOX07CgogICAgZm9yKGF1dG8gaTogbCkgY291dCA8PCBpIDw8ICIgICI7IGNvdXQgPDwgZW5kbDsKICAgIHJldihsLDQsNik7CiAgICBmb3IoYXV0byBpOiBsKSBjb3V0IDw8IGkgPDwgIiAgIjsgY291dCA8PCBlbmRsOwoKfQoK