#include <iostream>
#include <algorithm>
using namespace std;
struct Node
{
int x;
Node *next;
};
void sort(Node *head)
{
Node *p = head;
bool modified = false;
while (1)
{
if (p->next == NULL) { if (!modified) { return; } p = head; modified = false; }
if (p->x < p->next->x) { swap(p->x, p->next->x); modified = true; }
p = p->next;
}
}
int main()
{
Node *head = new Node;
head->x = 5;
head->next = new Node;
head->next->x = 10;
head->next->next = new Node;
head->next->next->x = 2;
head->next->next->next = new Node;
head->next->next->next->x = 13;
head->next->next->next->next = NULL;
sort(head);
for (Node *p = head; p != NULL; p = p->next) { cout << p->x << "\n"; }
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8YWxnb3JpdGhtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKc3RydWN0IE5vZGUKewogICAgaW50IHg7CiAgICBOb2RlICpuZXh0Owp9OwoKdm9pZCBzb3J0KE5vZGUgKmhlYWQpCnsKICAgIE5vZGUgKnAgPSBoZWFkOwogICAgYm9vbCBtb2RpZmllZCA9IGZhbHNlOwogICAgd2hpbGUgKDEpCiAgICB7CiAgICAgICAgaWYgKHAtPm5leHQgPT0gTlVMTCkgeyBpZiAoIW1vZGlmaWVkKSB7IHJldHVybjsgfSBwID0gaGVhZDsgbW9kaWZpZWQgPSBmYWxzZTsgfQoKICAgICAgICBpZiAocC0+eCA8IHAtPm5leHQtPngpIHsgc3dhcChwLT54LCBwLT5uZXh0LT54KTsgbW9kaWZpZWQgPSB0cnVlOyB9CgogICAgICAgIHAgPSBwLT5uZXh0OwogICAgfQp9CgppbnQgbWFpbigpCnsKICAgIE5vZGUgKmhlYWQgPSBuZXcgTm9kZTsKICAgIGhlYWQtPnggICAgPSA1OwogICAgaGVhZC0+bmV4dCA9IG5ldyBOb2RlOwogICAgaGVhZC0+bmV4dC0+eCAgICA9IDEwOwogICAgaGVhZC0+bmV4dC0+bmV4dCA9IG5ldyBOb2RlOwogICAgaGVhZC0+bmV4dC0+bmV4dC0+eCAgICA9IDI7CiAgICBoZWFkLT5uZXh0LT5uZXh0LT5uZXh0ID0gbmV3IE5vZGU7CiAgICBoZWFkLT5uZXh0LT5uZXh0LT5uZXh0LT54ICAgID0gMTM7CiAgICBoZWFkLT5uZXh0LT5uZXh0LT5uZXh0LT5uZXh0ID0gTlVMTDsKICAgIHNvcnQoaGVhZCk7CiAgICBmb3IgKE5vZGUgKnAgPSBoZWFkOyBwICE9IE5VTEw7IHAgPSBwLT5uZXh0KSB7IGNvdXQgPDwgcC0+eCA8PCAiXG4iOyB9Cn0=