#define _GNU_SOURCE
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef unsigned u;

_Bool nomatch(char **strings, u upper, char *match){
	u lower=0;
	while(lower != upper){
#ifdef BINSEARCH
		u est = (lower+upper) >> 1;
		int cmp = strcmp(match, strings[est]);
		if(cmp == 0){
			return 0;
		}else if(cmp < 0){
			upper = est;
		}else if(cmp > 0){
			lower = est+1;
		}
#else
		if(strcmp(match, strings[lower++]) == 0) return 0;
#endif
	}
	return ~0;
}

ssize_t getstring(char **strPtr, size_t *sizePtr, FILE *fp){
	int b;
	u pos=0;
	for(;;){
		b = getchar();
		if(b=='\n' || b==' ' || b==EOF || b=='\r') break;
		if(*sizePtr <= pos+1){
			char * newbuf = realloc(*strPtr, *sizePtr+128);
			if(!newbuf) return -1;
			*sizePtr += 128;
			*strPtr = newbuf;
		}
		(*strPtr)[pos++] = b;
	}
	(*strPtr)[pos] = '\0';
	if(pos == 0 && b == EOF) return -1;
	return pos;
}

int main(int narg, char* argv[]){
	u argc = (u)narg;
	argv++; argc--;
	#ifdef BINSEARCH
	u i, j;
	for(i=0; i<argc-1; i++){
		for(j=i+1; j<argc; j++){
			if(strcmp(argv[j], argv[i]) < 0){
				register char *t = argv[i];
				argv[i] = argv[j];
				argv[j] = t;
			}
		}
	}
	#endif

	char *line=malloc(128); size_t len; ssize_t bytes;
	if(!line) exit(-1);
	while((bytes=getstring(&line, &len, stdin)) != -1) {
		if(nomatch(argv, argc, line)) puts(line);
	}
	free(line);
	return 0;
}
