#include<cstdio>
#include <iostream>
#define Maxsize 50
using namespace std;
typedef struct
{
int Data[Maxsize];
int top;
}Sqstack;
void Initstack(Sqstack& S)//初始化,初始化的值不一样,进栈操作与出栈操作会稍微有所不同;
{
S.top = -1;
}
bool Stackempty(Sqstack S)//判断空栈
{
if (S.top == -1) return true;
else return false;
}
bool Push(Sqstack& S, int& elem)//压栈
{
if (S.top == Maxsize - 1) return false;
S.Data[++S.top] = elem;
return true;
}
bool Pop(Sqstack& S,int &elem)//弹栈
{
if (S.top == -1) return false;
elem = S.Data[S.top--];
return true;
}
bool GetTopElem(Sqstack S, int& elem)//读栈顶元素
{
if (S.top == -1) return false;
elem = S.Data[S.top];
return true;
}
int main()
{
Sqstack S;
int Elem=0;
Initstack(S);
for (int i = 0; ; i++)
{
cin >> Elem;
if (Elem == 000 ||!Push(S, Elem)) break;
}
for (int i = 0;; i++)
{
if (!Pop(S, Elem)) break;
cout << Elem << endl;
}
}