#include <iostream>
using namespace std;

enum stan {OK, BLAD};

template <class TypPodst>  class FIFO{
private:
	TypPodst *t;
	int glowa,ogon,MaxElt;
public:
  FIFO(int n){
	   MaxElt=n;
	   glowa=ogon=0;
	   t=new TypPodst[MaxElt+1];
   }

void wstaw(TypPodst x){
	if (ogon<MaxElt){
		t[ogon++]=x;
        if(ogon>MaxElt) 
		ogon=0;
	 } else 
 		cout << " ** Kolejna pełna ** \n";

   }
   
  void wypisz(){
	  for (int i = glowa; i <= ogon; i++)
		  cout << "i[" << i << "]=" << t[i] << endl;
		  
   }
   
  int obsluz(TypPodst &w){
   if (glowa==ogon) 
		return BLAD; // informacja o błędzie operacji
	w=t[glowa++];
	if(glowa>MaxElt) 
		glowa=0;
	return OK;
	}

     bool pusta(){ return (glowa==ogon); }   // czy kolejka jest pusta
     
};
