
#include <stdlib.h>
#include <stdio.h>


size_t strlen(const char*s)
{
	const char*p;
	for(p=s;*p;++p);
	return p-s;
}


char* strsub(const char*s, size_t start, size_t len)
{
	char* res = (char*) malloc(len+1);
	for(int i = 0; i < len; i++){
		*(res + i) = *(s + start + i);
	}
	*(res + len) = '\0';
	return res;
}

struct Node
{
	int value;
	Node* next;
};

void newList(Node ** l)
{
	*l=NULL;
}

void push(Node ** l, int x) {

	Node * n = (Node*)malloc(sizeof(Node));

	n->value = x;
	n->next = *l;
	*l = n; 
}
int empty(Node *l) {
	return !l;
}


void pop(Node** l)
{
	Node* n = (*l)->next;
	free(*l);
	*l = n;
	
}

int front(Node** l){
	return (*l)->value;
}


int main() {
	Node* l;
	newList(&l);
	for(;;){
		int tmp;
		scanf("%d", &tmp);
		if(!tmp) break;
		push(&l,tmp);
	}
	while(!empty(l)){
		printf("%d\n",front(&l));
		pop(&l);
	}
}
