#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct list {
	int value;
	list* next;
};

void bubblesort(int *a) {
	for (int i = 0; i < 9; i++)
		for (int j = 0; j < 9; j++)
			if (a[j] > a[j + 1]) {
				int t = a[j];
				a[j] = a[j + 1];
				a[j + 1] = t;
			}
}


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

void push(list** l,int extra){
	list *n=(list*)malloc(sizeof(list));
	n->value=extra;
	n->next=*l;
	*l = n;
}

void pop(list** l) {
	list* t = *l;
	*l = (*l)->next;
	free(t);
}

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

int isEmpty(list *l) {
	return !l;
}

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

char* strcpy(char* dst, const char* src){
	for(; *src; dst ++ ,src ++) *dst = *src;
	*dst = 0;
	return dst;
}

char* strcat(const char* a, const char* b){
	char* n= (char*)malloc(strlen(a) + strlen(b) + 1);
	strcpy(strcpy(n, a), b);
	return n;
}
int main () {

	char a[200];

	scanf("%s", a);

	char *res=strcat("Hello ", a);

	printf("%s\n", res);

	free(res);

#if 0
	list *l;
	newList(&l);
	int value;

	for(;;){
		scanf("%d", &value);
		if(value==0) break;
		push(&l, value);
	}

	while(!isEmpty(l)) {
		printf("%d\n", front(l));
		pop(&l);
	}
#endif
}
