    #include <iostream>
    #define STEK_SIZE 512
    using namespace std;
     
     
     
     
    template <typename uniVar>
    class stek{
    private:
        uniVar st[STEK_SIZE];
        int pos;
    public:
        bool operator << (uniVar &val){
            if(pos+1 < STEK_SIZE){
                st[++pos] = val;
                return true;
            }else{
                return false;
            }
        }
     
        bool operator >> (uniVar &val){
            if(pos > -1){
                val = st[pos--];
                return true;
            }else{
                return false;
            }
        } 
        friend bool operator << <>(uniVar &val, stek &ob);     
        friend bool operator >> <>(uniVar &val, stek &ob);
        stek(){
            pos = -1;    
        }
    };
     
    template <typename uniVar>          
    bool operator >> (uniVar &val, stek &ob){
            if(ob.pos+1 < STEK_SIZE){
                ob.st[++ob.pos] = val;
                return true;
            }else{
                return false;
            }
    }
     
    template <typename uniVar>          
    bool operator << (uniVar &val, stek &ob){
            if(ob.pos > -1){
                val = ob.st[ob.pos--];
                return true;
            }else{
                return false;
            }
    }
     
     
    int main(){
    char sym;    
    char buffer[] = "hello world";
        stek<char> Stek;
     
        Stek << buffer[10];
        Stek << buffer[9];
        Stek << buffer[8];
        Stek << buffer[7];
        Stek << buffer[6];
        Stek << buffer[5];
        Stek << buffer[4];
        Stek << buffer[3];
        Stek << buffer[2];
        buffer[1] >> Stek;
        buffer[0] >> Stek;
        while(Stek >> sym){
            cout << sym;
        }
        cout << endl;
        cout << "C++ work" << endl;
        return 0;
    }