- #include <iostream> 
- using namespace std; 
-   
- struct List { 
-  int value = 0; 
-  List* next = nullptr; 
-  List(int x) : value(x) {} 
- }; 
-   
- List* reverse(List* head) { 
-   List* list = head; 
-   List* new_head = list; 
-   if (list->next != nullptr) { 
-      list = reverse(list->next); 
-      new_head = list; 
-      while (list->next != nullptr) { 
-      	list = list->next; 
-      } 
-      list->next = head; 
-      head->next = nullptr; 
-   } 
-   return new_head; 
- } 
-   
- int main() { 
-  List* head = new List(1); 
-  List* list = head; 
-  for (int index = 2; index < 10; index++) { 
-   List* next = new List(index); 
-   list->next = next; 
-   list = next; 
-  } 
-  head = reverse(head); 
-   
-  while (head != nullptr) { 
-   printf("%d\n", head->value); 
-   head = head->next; 
-  } 
-  return 0; 
- } 
				I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKc3RydWN0IExpc3QgewogaW50IHZhbHVlID0gMDsKIExpc3QqIG5leHQgPSBudWxscHRyOwogTGlzdChpbnQgeCkgOiB2YWx1ZSh4KSB7fQp9OwoKTGlzdCogcmV2ZXJzZShMaXN0KiBoZWFkKSB7CiAgTGlzdCogbGlzdCA9IGhlYWQ7CiAgTGlzdCogbmV3X2hlYWQgPSBsaXN0OwogIGlmIChsaXN0LT5uZXh0ICE9IG51bGxwdHIpIHsKICAgICBsaXN0ID0gcmV2ZXJzZShsaXN0LT5uZXh0KTsKICAgICBuZXdfaGVhZCA9IGxpc3Q7CiAgICAgd2hpbGUgKGxpc3QtPm5leHQgIT0gbnVsbHB0cikgewogICAgIAlsaXN0ID0gbGlzdC0+bmV4dDsKICAgICB9CiAgICAgbGlzdC0+bmV4dCA9IGhlYWQ7CiAgICAgaGVhZC0+bmV4dCA9IG51bGxwdHI7CiAgfQogIHJldHVybiBuZXdfaGVhZDsKfQoKaW50IG1haW4oKSB7CiBMaXN0KiBoZWFkID0gbmV3IExpc3QoMSk7CiBMaXN0KiBsaXN0ID0gaGVhZDsKIGZvciAoaW50IGluZGV4ID0gMjsgaW5kZXggPCAxMDsgaW5kZXgrKykgewogIExpc3QqIG5leHQgPSBuZXcgTGlzdChpbmRleCk7CiAgbGlzdC0+bmV4dCA9IG5leHQ7CiAgbGlzdCA9IG5leHQ7CiB9CiBoZWFkID0gcmV2ZXJzZShoZWFkKTsKIAogd2hpbGUgKGhlYWQgIT0gbnVsbHB0cikgewogIHByaW50ZigiJWRcbiIsIGhlYWQtPnZhbHVlKTsKICBoZWFkID0gaGVhZC0+bmV4dDsKIH0KIHJldHVybiAwOwp9