#include <iostream>
#include <string.h>
using namespace std;

int main() {
	int n,m; //Задаем размерность обоих массивов.
	cin >>n>>m; //Считываем их.
	double *A=new double [n]; //Выделяем память для 1-го массива.
	double *B=new double [m]; //Выделяем память для 2-го массива.
	double *C=new double [n+m]; //Выделяем память для массива, который объединит в себе 1-й и 2-й массивы.
	cout <<"A={";
	for(int i=0;i<n;++i){ //Заполняем 1-й масив и сразу выводим его.
		cin >>A[i];
		cout <<A[i];
		if(i<n-1)
			cout <<" ";
		else
			cout <<"}";
	}
	cout <<endl<<"B={";
	for(int j=0;j<m;++j){ //Заполняем 2-й масив и сразу выводим его.
		cin >>B[j];
		cout <<B[j];
		if(j<m-1)
			cout <<" ";
		else
			cout <<"}";
	}
	cout <<endl<<"C={";
	memcpy(C,A,n*sizeof (A[0])); //С помощью функции "memcpy"(из библиотеки string.h) копируем данные из 1-го массива(A) в массив(C). По условию задачи в массиве C сначала идут элементы массива A.
	//Задаем данные в функцию: "в какой массив","из какого массива", "размер массива"(размер типа одного элемента массива, умноженный на число элементов(n)).
    memcpy(C+n,B,m*sizeof (B[0])); //"C+n"-n первых элементов массива(C) уже скопированы из 1-го массива(A), оставшиеся m будут скопированы из 2-го массива(B).
    for(int k=0;k<n+m;++k){ 
    	cout <<C[k]; //Выводим массив(C) - объединение 1-го(A) и 2-го(B) массивов.
    	if(k<n+m-1)
    		cout <<" ";
    	else
    		cout <<"}";
    }
	return 0;
}