#include <iostream>
#include <random>
#include <stack>
#include <string>
#include <vector>
template<typename T>
void stacksort(std::stack<T>& source, std::stack<T>& result);
int main()
{
std::stack<int> source;
for (auto &e : {7,1,9,6,4})
{
source.push(e);
}
std::stack<int> result;
stacksort(source, result);
while (!result.empty())
{
std::cout << result.top() << '\n';
result.pop();
}
}
template<typename T>
void stacksort(std::stack<T>& source, std::stack<T>& result)
{
std::stack<T> temp;
if (!source.empty())
{
result.push(source.top());
source.pop();
}
while (!source.empty())
{
while (!result.empty() && source.top() > result.top())
{
temp.push(result.top());
result.pop();
}
result.push(source.top());
source.pop();
while (!temp.empty())
{
result.push(temp.top());
temp.pop();
}
}
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8cmFuZG9tPgojaW5jbHVkZSA8c3RhY2s+CiNpbmNsdWRlIDxzdHJpbmc+CiNpbmNsdWRlIDx2ZWN0b3I+Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBUPgp2b2lkIHN0YWNrc29ydChzdGQ6OnN0YWNrPFQ+JiBzb3VyY2UsIHN0ZDo6c3RhY2s8VD4mIHJlc3VsdCk7CgppbnQgbWFpbigpCnsKICAgIHN0ZDo6c3RhY2s8aW50PiBzb3VyY2U7CiAgICAKICAgIGZvciAoYXV0byAmZSA6IHs3LDEsOSw2LDR9KQogICAgewogICAgICAgIHNvdXJjZS5wdXNoKGUpOwogICAgfQogICAgCiAgICBzdGQ6OnN0YWNrPGludD4gcmVzdWx0OwogICAgc3RhY2tzb3J0KHNvdXJjZSwgcmVzdWx0KTsKICAgIAogICAgd2hpbGUgKCFyZXN1bHQuZW1wdHkoKSkKICAgIHsKICAgICAgc3RkOjpjb3V0IDw8IHJlc3VsdC50b3AoKSA8PCAnXG4nOwogICAgICByZXN1bHQucG9wKCk7CiAgICB9Cn0KCnRlbXBsYXRlPHR5cGVuYW1lIFQ+CnZvaWQgc3RhY2tzb3J0KHN0ZDo6c3RhY2s8VD4mIHNvdXJjZSwgc3RkOjpzdGFjazxUPiYgcmVzdWx0KQp7CiAgICBzdGQ6OnN0YWNrPFQ+IHRlbXA7CiAgICAKICAgIAogICAgaWYgKCFzb3VyY2UuZW1wdHkoKSkKICAgIHsKICAgICAgcmVzdWx0LnB1c2goc291cmNlLnRvcCgpKTsKICAgICAgc291cmNlLnBvcCgpOwogICAgfQogICAgCiAgICB3aGlsZSAoIXNvdXJjZS5lbXB0eSgpKQogICAgewogICAgICB3aGlsZSAoIXJlc3VsdC5lbXB0eSgpICYmIHNvdXJjZS50b3AoKSA+IHJlc3VsdC50b3AoKSkKICAgICAgewogICAgICAgIHRlbXAucHVzaChyZXN1bHQudG9wKCkpOwogICAgICAgIHJlc3VsdC5wb3AoKTsKICAgICAgfQogICAgICAKICAgICAgcmVzdWx0LnB1c2goc291cmNlLnRvcCgpKTsKICAgICAgc291cmNlLnBvcCgpOwogICAgICAKICAgICAgd2hpbGUgKCF0ZW1wLmVtcHR5KCkpCiAgICAgIHsKICAgICAgICByZXN1bHQucHVzaCh0ZW1wLnRvcCgpKTsKICAgICAgICB0ZW1wLnBvcCgpOwogICAgICB9CiAgICB9Cn0=