#include <iostream>
using namespace std;

template <class  t>

 static class node{
    t value;
    node* next;

    node (t value){
        this->value=value;
        next = nullptr;
    }


};

template <class  t>

 class linkedList{
    node<t>* head; int size;
    int Size (){
        return size;
    }

 public:
    void push_front(t value){

        node<t> *newnode;
        newnode = new node<t>(value);
        if(size==0){
            head=newnode; size++;
        } else {
            newnode->next=head;
            head=newnode;
        }




    }
     void push_back(t value){
        if(size==0){
            push_front(value);
        }else {
            node<t> current=head;
            while (current.next !=value){
                current =current.next;
            }
            node<t> newnode = new node<t>(value);
            current.next =newnode;
            size++;

        }


    }
    void traverse(){
        node<t> current =head;
        while (current != nullptr){
            cout<<current.value <<"  ";
            current =current.next;
        }

    }


     linkedList(){
            size=0;
            head= nullptr;
        }
 };












int main() {


linkedList<int> l;

l.push_front(5);
l.push_front(10);
    l.push_front(5);
    l.push_front(10);
    l.push_front(5);
    l.push_front(10);
    l.push_front(5);
    l.push_front(10);
    l.traverse();
    return 0;
}
