#include
#include
using namespace std;
#define max 10010;
template
class list;
template
class list
{
private:
type *data;
int size;
public:
list()
{
data = new type[max];
size = 0;
}
~list() { delete[] data; }
/*list(const list &other)
{
size = other.size;
data = new type[max];
for (int i = 0; i < size; i++)
data[i] = other.data[i];
}*/
friend list &operator+(const list& x, const list& y)
{
list<type> tmp;
for (int i = 0; i < x.length(); i++)
tmp.push_pack(x.visit(i));
for (int i = x.length(); i < x.length() + y.length(); i++)
tmp.push_pack(y.visit(i - x.length()));
return tmp;
}
int length() { return size; }
void insert(int i, const type &x);
void push_pack(const type &x);
type visit(int i);
};
template
void list::insert(int i, const type &x)
{
if (isize) return false;
for (int j = size; j > i; j--) data[j] = data[j - 1];
data[i] = x;
++size;
}
template
void list::push_pack(const type &x)
{
data[size] = x;
++size;
}
template
type list::visit(int i)
{
if (isize) return false;
return data[i];
}
char str[10];
int n, m;
int main()
{
while (cin>>str)
{
cin >> n >> m;
if (str == "int")
{
list<int> l1;
list<int> l2;
int a, b;
for (int i = 0; i < n; i++)
{
cin >> a;
l1.push_pack(a);
}
for (int i = 0; i < m; i++)
{
cin >> b;
l2.push_pack(b);
}
list<int> l3;
l3 = l1 + l2;
for (int i = 0; i < l3.length(); i++)
cout << l3.visit(i) << ' ';
}
else if (str == "char")
{
list<char> l1;
list<char> l2;
char a, b;
for (int i = 0; i < n; i++)
{
cin >> a;
l1.push_pack(a);
}
for (int i = 0; i < m; i++)
{
cin >> b;
l2.push_pack(b);
}
list<char> l3;
l3 = l1 + l2;
for (int i = 0; i < l3.length(); i++)
cout << l3.visit(i) << ' ';
}
else if (str == "double")
{
list<double> l1;
list<double> l2;
double a, b;
for (int i = 0; i < n; i++)
{
cin >> a;
l1.push_pack(a);
}
for (int i = 0; i < m; i++)
{
cin >> b;
l2.push_pack(b);
}
list<double> l3;
l3 = l1 + l2;
for (int i = 0; i < l3.length(); i++)
cout << l3.visit(i) << ' ';
}
}
return 0;
}