#include<bits/stdc++.h>
using namespace std;
typedef struct Lnode {
int data;
struct Lnode *next;
}Lnode, *Linklist;
void Creatlist(Linklist &L, int &e) {
Lnode *p = new Lnode;
p->data = e;
p->next = NULL;
Lnode *cur = L;
while (cur->next != NULL) {
cur = cur->next;
}
cur->next = p;
p->next = NULL;
}
void Initlist(Linklist &L) {
L = new Lnode;
L->next = NULL;
}
void All(Linklist &L1, Linklist &L2, queue <int> &myqueue) {
Lnode *c1 = L1->next;
Lnode *c2 = L2->next;
while (c1&&c2)
{
if (c1->data == c2->data) {
myqueue.push(c1->data);
c1 = c1->next;
c2 = c2->next;
}
else if (c1->data > c2->data) {
c2 = c2->next;
}
else {
c1 = c1->next;
}
}
while (c1==NULL||c2==NULL)
{
break;
}
}
int main() {
int n, m;
while (scanf("%d %d",&n,&m)!=EOF) {
if (n == 0 && m == 0) break;
Linklist L1;
Initlist(L1);
Linklist L2;
Initlist(L2);
for (int i = 0; i < n; i++) {
int e;
cin >> e;
Creatlist(L1, e);
}
for (int i = 0; i < m; i++) {
int e;
cin >> e;
Creatlist(L2, e);
}
queue <int> myqueue;
All(L1, L2, myqueue);
while (!myqueue.empty())
{
if(myqueue.size()>1){
cout << myqueue.front()<<" ";
myqueue.pop();
}
else
{
cout << myqueue.front() << endl;
myqueue.pop();
}
}
}
}