/*
* A dinamikus memóriában lefoglalunk valamekkora méretű tárterületet,
* ha a tárterület betelne, újabbat foglalunk le és átmásoljuk az eddig
* beolvasott elemeket.
*/
#include <iostream>
using namespace std;
void grow( int *&tp, int& sz);
int main()
{
int size = 10;
int *tp = new int[size];
int i = 0;
while ( cin >> tp[i] )
{
++i;
if ( i == size )
grow( tp, size);
}
for ( int j = i-1; j >= 0; --j)
{
cout << tp[j] << endl;
}
delete [] tp;
return 0;
}
void grow( int *&tp, int& sz)
{
int *newtp = new int[2*sz];
for ( int ii = 0; ii < sz; ++ii)
{
newtp[ii] = tp[ii];
}
delete [] tp;
sz = 2*sz;
tp = newtp;
}