#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::random_device rd;
std::mt19937 engine(rd());
std::uniform_int_distribution<> dist(1, 100);
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+JiBzb3VyY2UsIHN0ZDo6c3RhY2s8VD4mIHJlc3VsdCk7CgppbnQgbWFpbigpCnsKICAgIHN0ZDo6cmFuZG9tX2RldmljZSByZDsKICAgIHN0ZDo6bXQxOTkzNyBlbmdpbmUocmQoKSk7CiAgICBzdGQ6OnVuaWZvcm1faW50X2Rpc3RyaWJ1dGlvbjw+IGRpc3QoMSwgMTAwKTsKICAgIAogICAgc3RkOjpzdGFjazxpbnQ+IHNvdXJjZTsKICAgIAogICAgZm9yIChhdXRvICZlIDogezcsMSw5LDYsNH0pCiAgICB7CiAgICAgICAgc291cmNlLnB1c2goZSk7CiAgICB9CiAgICAKICAgIHN0ZDo6c3RhY2s8aW50PiByZXN1bHQ7CiAgICBzdGFja3NvcnQoc291cmNlLCByZXN1bHQpOwogICAgCiAgICB3aGlsZSAoIXJlc3VsdC5lbXB0eSgpKQogICAgewogICAgICBzdGQ6OmNvdXQgPDwgcmVzdWx0LnRvcCgpIDw8ICdcbic7CiAgICAgIHJlc3VsdC5wb3AoKTsKICAgIH0KfQoKdGVtcGxhdGU8dHlwZW5hbWUgVD4Kdm9pZCBzdGFja3NvcnQoc3RkOjpzdGFjazxUPiYgc291cmNlLCBzdGQ6OnN0YWNrPFQ+JiByZXN1bHQpCnsKICAgIHN0ZDo6c3RhY2s8VD4gdGVtcDsKICAgIAogICAgCiAgICBpZiAoIXNvdXJjZS5lbXB0eSgpKQogICAgewogICAgICByZXN1bHQucHVzaChzb3VyY2UudG9wKCkpOwogICAgICBzb3VyY2UucG9wKCk7CiAgICB9CiAgICAKICAgIHdoaWxlICghc291cmNlLmVtcHR5KCkpCiAgICB7CiAgICAgIHdoaWxlICghcmVzdWx0LmVtcHR5KCkgJiYgc291cmNlLnRvcCgpID4gcmVzdWx0LnRvcCgpKQogICAgICB7CiAgICAgICAgdGVtcC5wdXNoKHJlc3VsdC50b3AoKSk7CiAgICAgICAgcmVzdWx0LnBvcCgpOwogICAgICB9CiAgICAgIAogICAgICByZXN1bHQucHVzaChzb3VyY2UudG9wKCkpOwogICAgICBzb3VyY2UucG9wKCk7CiAgICAgIAogICAgICB3aGlsZSAoIXRlbXAuZW1wdHkoKSkKICAgICAgewogICAgICAgIHJlc3VsdC5wdXNoKHRlbXAudG9wKCkpOwogICAgICAgIHRlbXAucG9wKCk7CiAgICAgIH0KICAgIH0KfQ==