#include<iostream>
#include<cstdlib>
#include<cstring>
using namespace std;
struct tree {
char data;
tree *left, *right;
};
tree* build(char *ch, int len) {//t==NULL
tree *head, *p, *q;
head = (tree*)malloc(sizeof(tree));
head->left = head->right = NULL;
p = head;
for (int i = 0; i < len; i++) {
q = (tree*)malloc(sizeof(tree));
q->data = ch[i];
q->left = q->right = NULL;
if (ch[i] == '0') {
p->left = q;
}
else p->right = q;
p = q;
}
return head;
}
void getrest(int n) {//n lines
char ch[110];
while (n--) scanf("%s%*c", ch);
}
void print(tree *t,int d) {
if (t == NULL) {
printf("empty\n");
return;
}
print(t->right, d + 1);
for (int i = 0; i < d * 4; i++) cout << " ";
printf("??????????%c\n", t->data);
print(t->left, d + 1);
}
int main() {
freopen("C:/Users/SXC/Desktop/input.txt", "r", stdin);
tree *head = (tree*)malloc(sizeof(tree));
head->left = head->right = NULL;
int n;
scanf("%d%*c", &n);
for (int T = 0; T < n; T++) {
char ch[110];
scanf("%s%*c", ch);
int len = strlen(ch);
tree *p = head;
bool issub = true;
for (int i = 0; i < len; i++) {//检索一行的输入
if (ch[i] == '0') {
if (p->left == NULL) {
p->left = build(ch + i, len - i)->left;//非前缀
issub = false;
if (p->right == NULL&&i != 0) issub = true;
break;
}
else {
p = p->left;
continue;
}
}
else {///1111
if (p->right == NULL) {
p->right = build(ch + i, len - i)->right;//非前缀
issub = false;
if (p->left == NULL&&i != 0) issub = true;
break;
}
else {
p = p->right;
continue;
}
}
}
if (issub) {
printf("%s\n", ch);
getrest(n - T);
return 0;
}
}
print(head, 0);
cout << "YES" << endl;
}
I2luY2x1ZGU8aW9zdHJlYW0+CiNpbmNsdWRlPGNzdGRsaWI+CiNpbmNsdWRlPGNzdHJpbmc+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnN0cnVjdCB0cmVlIHsKCWNoYXIgZGF0YTsKCXRyZWUgKmxlZnQsICpyaWdodDsKfTsKdHJlZSogYnVpbGQoY2hhciAqY2gsIGludCBsZW4pIHsvL3Q9PU5VTEwKCXRyZWUgKmhlYWQsICpwLCAqcTsKCWhlYWQgPSAodHJlZSopbWFsbG9jKHNpemVvZih0cmVlKSk7CgloZWFkLT5sZWZ0ID0gaGVhZC0+cmlnaHQgPSBOVUxMOwoJcCA9IGhlYWQ7Cglmb3IgKGludCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7CgkJcSA9ICh0cmVlKiltYWxsb2Moc2l6ZW9mKHRyZWUpKTsKCQlxLT5kYXRhID0gY2hbaV07CgkJcS0+bGVmdCA9IHEtPnJpZ2h0ID0gTlVMTDsKCQlpZiAoY2hbaV0gPT0gJzAnKSB7CgkJCXAtPmxlZnQgPSBxOwoJCX0KCQllbHNlIHAtPnJpZ2h0ID0gcTsKCQlwID0gcTsKCX0KCXJldHVybiBoZWFkOwp9CnZvaWQgZ2V0cmVzdChpbnQgbikgey8vbiBsaW5lcwoJY2hhciBjaFsxMTBdOwoJd2hpbGUgKG4tLSkgc2NhbmYoIiVzJSpjIiwgY2gpOwp9CnZvaWQgcHJpbnQodHJlZSAqdCxpbnQgZCkgewoJaWYgKHQgPT0gTlVMTCkgewoJCXByaW50ZigiZW1wdHlcbiIpOwoJCXJldHVybjsKCX0KCXByaW50KHQtPnJpZ2h0LCBkICsgMSk7Cglmb3IgKGludCBpID0gMDsgaSA8IGQgKiA0OyBpKyspIGNvdXQgPDwgIiAiOwoJcHJpbnRmKCI/Pz8/Pz8/Pz8/JWNcbiIsIHQtPmRhdGEpOwoJcHJpbnQodC0+bGVmdCwgZCArIDEpOwp9CmludCBtYWluKCkgewoJZnJlb3BlbigiQzovVXNlcnMvU1hDL0Rlc2t0b3AvaW5wdXQudHh0IiwgInIiLCBzdGRpbik7Cgl0cmVlICpoZWFkID0gKHRyZWUqKW1hbGxvYyhzaXplb2YodHJlZSkpOwoJaGVhZC0+bGVmdCA9IGhlYWQtPnJpZ2h0ID0gTlVMTDsKCWludCBuOwoJc2NhbmYoIiVkJSpjIiwgJm4pOwoJZm9yIChpbnQgVCA9IDA7IFQgPCBuOyBUKyspIHsKCQljaGFyIGNoWzExMF07CgkJc2NhbmYoIiVzJSpjIiwgY2gpOwoJCWludCBsZW4gPSBzdHJsZW4oY2gpOwoJCXRyZWUgKnAgPSBoZWFkOwoJCWJvb2wgaXNzdWIgPSB0cnVlOwoJCWZvciAoaW50IGkgPSAwOyBpIDwgbGVuOyBpKyspIHsvL+ajgOe0ouS4gOihjOeahOi+k+WFpQoJCQlpZiAoY2hbaV0gPT0gJzAnKSB7CgkJCQlpZiAocC0+bGVmdCA9PSBOVUxMKSB7CgkJCQkJcC0+bGVmdCA9IGJ1aWxkKGNoICsgaSwgbGVuIC0gaSktPmxlZnQ7Ly/pnZ7liY3nvIAKCQkJCQlpc3N1YiA9IGZhbHNlOwoJCQkJCWlmIChwLT5yaWdodCA9PSBOVUxMJiZpICE9IDApIGlzc3ViID0gdHJ1ZTsKCQkJCQlicmVhazsKCQkJCX0KCQkJCWVsc2UgewoJCQkJCXAgPSBwLT5sZWZ0OwoJCQkJCWNvbnRpbnVlOwoJCQkJfQoJCQl9CgkJCWVsc2Ugey8vLzExMTEKCQkJCWlmIChwLT5yaWdodCA9PSBOVUxMKSB7CgkJCQkJcC0+cmlnaHQgPSBidWlsZChjaCArIGksIGxlbiAtIGkpLT5yaWdodDsvL+mdnuWJjee8gAoJCQkJCWlzc3ViID0gZmFsc2U7CgkJCQkJaWYgKHAtPmxlZnQgPT0gTlVMTCYmaSAhPSAwKSBpc3N1YiA9IHRydWU7CgkJCQkJYnJlYWs7CgkJCQl9CgkJCQllbHNlIHsKCQkJCQlwID0gcC0+cmlnaHQ7CgkJCQkJY29udGludWU7CgkJCQl9CgkJCX0KCQl9CgkJaWYgKGlzc3ViKSB7CgkJCXByaW50ZigiJXNcbiIsIGNoKTsKCQkJZ2V0cmVzdChuIC0gVCk7CgkJCXJldHVybiAwOwoJCX0KCX0KCXByaW50KGhlYWQsIDApOwoJY291dCA8PCAiWUVTIiA8PCBlbmRsOwp9