#include<stdio.h>
#include<string.h>
int check[40001];
char res[1000001][6];
char input[1000001][6];
int number[1000001];
char temp_res[1000001][6];
void merge(int left, int right, int mid)
{
int i = left, j = mid + 1, k = left;
while (i <= mid && j <= right) {
if (strcmp(res
[i
], res
[j
]) > 0) strcpy(temp_res
[k
++], res
[i
++]); else strcpy(temp_res
[k
++], res
[j
++]); }
while(i
<=mid
) strcpy(temp_res
[k
++], res
[i
++]); while(j
<=right
) strcpy(temp_res
[k
++], res
[j
++]);
for (int l
= left
; l
<= right
; l
++) strcpy(res
[l
], temp_res
[l
]); }
void divide(int left, int right)
{
if (left >= right) return;
int mid = (left + right) / 2;
divide(left, mid);
divide(mid + 1, right);
merge(left, right, mid);
}
int main(void)
{
int n;
char temp[6] = "";
for (int i = 0; i < n; i++) {
int num = 0, mod = 1;
for (int j = 0; input[i][j]; j++) {
num += input[i][j] * mod;
mod *= 2;
}
number[i] = num;
if (!strcmp(temp
, "enter")) check
[num
] = 1; else check[num] = 0;
}
int idx = 0;
for (int i = 0; i < n; i++) {
if (check
[number
[i
]]) strcpy(res
[idx
++], input
[i
]); }
divide(0, idx - 1);
for (int i = 0; i < idx; i++) {
if (i
== idx
- 1) puts(res
[i
]); else {
if (!strcmp(res
[i
], res
[i
+ 1])) continue; }
}
}
I2luY2x1ZGU8c3RkaW8uaD4KI2luY2x1ZGU8c3RyaW5nLmg+CiAKaW50IGNoZWNrWzQwMDAxXTsKY2hhciByZXNbMTAwMDAwMV1bNl07CmNoYXIgaW5wdXRbMTAwMDAwMV1bNl07CmludCBudW1iZXJbMTAwMDAwMV07CmNoYXIgdGVtcF9yZXNbMTAwMDAwMV1bNl07CiAKdm9pZCBtZXJnZShpbnQgbGVmdCwgaW50IHJpZ2h0LCBpbnQgbWlkKQp7CglpbnQgaSA9IGxlZnQsIGogPSBtaWQgKyAxLCBrID0gbGVmdDsKCXdoaWxlIChpIDw9IG1pZCAmJiBqIDw9IHJpZ2h0KSB7CgkJaWYgKHN0cmNtcChyZXNbaV0sIHJlc1tqXSkgPiAwKSBzdHJjcHkodGVtcF9yZXNbaysrXSwgcmVzW2krK10pOwoJCWVsc2Ugc3RyY3B5KHRlbXBfcmVzW2srK10sIHJlc1tqKytdKTsKCX0KCXdoaWxlKGk8PW1pZCkgc3RyY3B5KHRlbXBfcmVzW2srK10sIHJlc1tpKytdKTsKCXdoaWxlKGo8PXJpZ2h0KSBzdHJjcHkodGVtcF9yZXNbaysrXSwgcmVzW2orK10pOwogCglmb3IgKGludCBsID0gbGVmdDsgbCA8PSByaWdodDsgbCsrKSBzdHJjcHkocmVzW2xdLCB0ZW1wX3Jlc1tsXSk7Cn0KIAp2b2lkIGRpdmlkZShpbnQgbGVmdCwgaW50IHJpZ2h0KQp7CglpZiAobGVmdCA+PSByaWdodCkgcmV0dXJuOwoJaW50IG1pZCA9IChsZWZ0ICsgcmlnaHQpIC8gMjsKCWRpdmlkZShsZWZ0LCBtaWQpOwoJZGl2aWRlKG1pZCArIDEsIHJpZ2h0KTsKCW1lcmdlKGxlZnQsIHJpZ2h0LCBtaWQpOwp9CiAKaW50IG1haW4odm9pZCkKewoJaW50IG47CgljaGFyIHRlbXBbNl0gPSAiIjsKCXNjYW5mKCIlZCIsICZuKTsKCWZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKSB7CgkJc2NhbmYoIiVzIiwgaW5wdXRbaV0pOwoJCXNjYW5mKCIlcyIsIHRlbXApOwoJCWludCBudW0gPSAwLCBtb2QgPSAxOwoJCWZvciAoaW50IGogPSAwOyBpbnB1dFtpXVtqXTsgaisrKSB7CgkJCW51bSArPSBpbnB1dFtpXVtqXSAqIG1vZDsKCQkJbW9kICo9IDI7CgkJfQoJCW51bWJlcltpXSA9IG51bTsKIAoJCWlmICghc3RyY21wKHRlbXAsICJlbnRlciIpKSBjaGVja1tudW1dID0gMTsKCQllbHNlIGNoZWNrW251bV0gPSAwOwoJfQogCglpbnQgaWR4ID0gMDsKCWZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKSB7CgkJaWYgKGNoZWNrW251bWJlcltpXV0pIHN0cmNweShyZXNbaWR4KytdLCBpbnB1dFtpXSk7Cgl9CiAKCWRpdmlkZSgwLCBpZHggLSAxKTsKCWZvciAoaW50IGkgPSAwOyBpIDwgaWR4OyBpKyspIHsKCQlpZiAoaSA9PSBpZHggLSAxKSBwdXRzKHJlc1tpXSk7CgkJZWxzZSB7CgkJCWlmICghc3RyY21wKHJlc1tpXSwgcmVzW2kgKyAxXSkpIGNvbnRpbnVlOwoJCQlwdXRzKHJlc1tpXSk7CgkJfQoJfQp9