#include <iostream>
#include <stack>
using namespace std;
// Function to insert an element at the bottom of the stack
void insertAtBottom(stack<int>& s, int x) {
// If the stack is empty, push the element
if (s.empty()) {
s.push(x);
return;
}
// Otherwise, pop the top element
int temp = s.top();
s.pop();
// Recursive call to insert at the bottom
insertAtBottom(s, x);
// Push the popped element back on top
s.push(temp);
}
// Function to reverse the stack
void reverse(stack<int>& s) {
if (!s.empty()) {
// Pop the top element
int x = s.top();
s.pop();
// Reverse the remaining stack
reverse(s);
// Insert the popped element at the bottom
insertAtBottom(s, x);
}
}
int main() {
stack<int> s;
// Pushing elements to the stack: 1 2 3 4 (bottom to top)
s.push(1);
s.push(2);
s.push(3);
s.push(4);
// Reversing the stack
reverse(s);
// Printing the reversed stack
while (!s.empty()) {
cout << s.top() << " ";
s.pop();
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RhY2s+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgovLyBGdW5jdGlvbiB0byBpbnNlcnQgYW4gZWxlbWVudCBhdCB0aGUgYm90dG9tIG9mIHRoZSBzdGFjawp2b2lkIGluc2VydEF0Qm90dG9tKHN0YWNrPGludD4mIHMsIGludCB4KSB7CiAgICAvLyBJZiB0aGUgc3RhY2sgaXMgZW1wdHksIHB1c2ggdGhlIGVsZW1lbnQKICAgIGlmIChzLmVtcHR5KCkpIHsKICAgICAgICBzLnB1c2goeCk7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgCiAgICAvLyBPdGhlcndpc2UsIHBvcCB0aGUgdG9wIGVsZW1lbnQKICAgIGludCB0ZW1wID0gcy50b3AoKTsKICAgIHMucG9wKCk7CiAgICAKICAgIC8vIFJlY3Vyc2l2ZSBjYWxsIHRvIGluc2VydCBhdCB0aGUgYm90dG9tCiAgICBpbnNlcnRBdEJvdHRvbShzLCB4KTsKICAgIAogICAgLy8gUHVzaCB0aGUgcG9wcGVkIGVsZW1lbnQgYmFjayBvbiB0b3AKICAgIHMucHVzaCh0ZW1wKTsKfQoKLy8gRnVuY3Rpb24gdG8gcmV2ZXJzZSB0aGUgc3RhY2sKdm9pZCByZXZlcnNlKHN0YWNrPGludD4mIHMpIHsKICAgIGlmICghcy5lbXB0eSgpKSB7CiAgICAgICAgLy8gUG9wIHRoZSB0b3AgZWxlbWVudAogICAgICAgIGludCB4ID0gcy50b3AoKTsKICAgICAgICBzLnBvcCgpOwogICAgICAgIAogICAgICAgIC8vIFJldmVyc2UgdGhlIHJlbWFpbmluZyBzdGFjawogICAgICAgIHJldmVyc2Uocyk7CiAgICAgICAgCiAgICAgICAgLy8gSW5zZXJ0IHRoZSBwb3BwZWQgZWxlbWVudCBhdCB0aGUgYm90dG9tCiAgICAgICAgaW5zZXJ0QXRCb3R0b20ocywgeCk7CiAgICB9Cn0KCmludCBtYWluKCkgewogICAgc3RhY2s8aW50PiBzOwoKICAgIC8vIFB1c2hpbmcgZWxlbWVudHMgdG8gdGhlIHN0YWNrOiAxIDIgMyA0IChib3R0b20gdG8gdG9wKQogICAgcy5wdXNoKDEpOwogICAgcy5wdXNoKDIpOwogICAgcy5wdXNoKDMpOwogICAgcy5wdXNoKDQpOwoKICAgIC8vIFJldmVyc2luZyB0aGUgc3RhY2sKICAgIHJldmVyc2Uocyk7CgogICAgLy8gUHJpbnRpbmcgdGhlIHJldmVyc2VkIHN0YWNrCiAgICB3aGlsZSAoIXMuZW1wdHkoKSkgewogICAgICAgIGNvdXQgPDwgcy50b3AoKSA8PCAiICI7CiAgICAgICAgcy5wb3AoKTsKICAgIH0KCiAgICByZXR1cm4gMDsKfQo=