import java.util.TreeMap;
import java.util.TreeSet;
import java.util.Scanner;
import java.util.LinkedList;

public class GJoe
{

	public static void main(String args[])
	{
			new GJoe();
	}

	LinkedList<Doc> movingDocs;
	TreeMap<Integer,Clerk> clerks;
	int Clerks;

	public GJoe()
	{
		Scanner in=new Scanner(System.in);
		while(true)
		{
			movingDocs=new LinkedList<Doc>();
			clerks=new TreeMap<Integer,Clerk>();
			String ln=in.nextLine();
			Scanner sub=new Scanner(ln);
			int Boxes=sub.nextInt();
			Clerks=sub.nextInt();
			if ((Boxes==0) && (Clerks==0)) return;

			for(int c=0; c<Clerks; c++)
			{
				clerks.put(c,new Clerk(in,c));
				//System.out.println("Clerk " +c +" " + clerks.get(c));
			}
			Doc d=new Doc();
			d.next=0;
			movingDocs.add(d);

			while(movingDocs.size()!=0)
			{
				Doc e=movingDocs.pop();
				int c=e.next;
				clerks.get(c).handleDoc(e);
			}

			TreeSet<Integer> I=clerks.get(0).lastOut.checks;
			for(int i : I)
			{
				System.out.print("" + i + " ");
			}
			System.out.println();

		}

	}

	public class Doc
	{
		TreeSet<Integer> checks;
		TreeMap<Integer,TreeSet<Integer> > allMarks;
		int next;

		public Doc()
		{
			checks=new TreeSet<Integer>();
			allMarks=new TreeMap<Integer,TreeSet<Integer> >();
			for(int i=0; i<Clerks; i++)
			{
				allMarks.put(i,new TreeSet<Integer>());
			}
			next=-1;
		}

		public String toString()
		{
			return checks.toString();
		}

		public Doc copy()
		{
			Doc d=new Doc();
			d.checks.addAll(checks);
			d.allMarks=new TreeMap<Integer,TreeSet<Integer> >();
			for(int i=0; i<Clerks; i++)
			{
				TreeSet<Integer> old=allMarks.get(i);
				TreeSet<Integer> n=new TreeSet<Integer>();
				n.addAll(old);
				d.allMarks.put(i,n);
			}
			return d;
		}
	}

	public class Clerk
	{
		TreeSet<Integer> erase;
		TreeSet<Integer> mark;
		TreeSet<Integer> next;

		TreeSet<String> seen;
		Doc lastOut;
		int cn;

		public Clerk(Scanner in, int CN)
		{
				mark=readLine(in);
				erase=readLine(in);
				next=readLine(in);
				cn=CN;

				seen=new TreeSet<String>();

		}
		public String toString()
		{
			String s="" + erase + " " + mark + " " + next;
			return s;
		}

		public void handleDoc(Doc in)
		{
			in.allMarks.get(cn).addAll(in.checks);

			in.checks.addAll(in.allMarks.get(cn));
			if (seen.contains(in.toString())) return;
			seen.add(in.toString());

			for(int e : erase)
			{
				in.checks.remove(e);				
			}
			for(int m : mark)
			{
				in.checks.add(m);
			}
			lastOut=in.copy();
			for(int c : next)
			{
				Doc d=in.copy();
				d.next=c;
				movingDocs.add(d);
			}
			

		}

		private TreeSet<Integer> readLine(Scanner in)
		{
			String ln=in.nextLine();
			Scanner line_scan=new Scanner(ln);
			TreeSet<Integer> s=new TreeSet<Integer>();

			while(line_scan.hasNextInt())
			{
				s.add(line_scan.nextInt());
			}

			return s;

		}


	}

}
