#include<stdio.h>
#include<stdlib.h>
typedef struct Stack{
	int data;
	struct Stack* next;
}Stack;

void push(Stack*, int);
int pop(Stack*);

int main(){
	Stack* top=NULL;
	
	push(top,2);
	printf("push %d \n",top->data);
	
	push(top,3);
	printf("push %d \n",top->data);
	
	push(top,1);
	printf("push %d \n",top->data);
	
	printf("pop %d \n",pop(top));
	printf("pop %d \n",pop(top));
	printf("pop %d \n",pop(top));
	printf("pop %d \n",pop(top));
	return 0;
}


void push(Stack* top,int n){
	Stack* node = (Stack*)malloc(sizeof(Stack)); 
	node->data=n;
	node->next=top;
	top=node;
}

int pop(Stack* top){
	int n=top->data;
	Stack* node=top;
	top=top->next;
	free(node);
	return n;
}