#include<iostream>
using namespace std;
class Stackexception{
	char* why;
	public:
	Stackexception(char* p):why(p){}
	char* reason()
	{
		return why;
	}
};
template<typename T>
class Stack{
	T* data;
	int size;
	public:
	Stack(int s)
	{
		size=s;
		data=new T[size+1];
	}
	~Stack()
	{
		delete[] data;
	}	
	void fix(T a,int ba)
	{
		if(ba<0 || ba>=size)throw Stackexception("Invaild argument for Stack<T>::push(T,int).");
		data[ba]=a;
	}
	T get(int i)
	{
		if(i<0 || i>=size)throw Stackexception("Invaild argument for Stack<T>::get(int).");
		return data[i];
	}
};
int main()
{
	Stack<int> s1(100);
	try
	{
	for(int i=0;i<100;i++){
		s1.fix(i,i);
		cout<<s1.get(i)<<endl;
	}
	s1.fix(100000,1000);
	}
	catch(Stackexception& a)
	{
		cout<<a.reason()<<endl;
	}
}