#include <iostream>
#include <algorithm>
#include <iterator>
using namespace std;

template <class Init1, class Init2, class OutIt>
inline OutIt join_array(Init1 begin1, Init1 end1, Init2 begin2, Init2 end2, OutIt output)
{
	return copy(begin2, end2, copy(begin1, end1, output));
}

template <class Container1, class Container2, class ContainerOut>
inline void join_container(const Container1& c1, const Container2& c2, ContainerOut& out)
{
	join_array(begin(c1), end(c1), begin(c2), end(c2), begin(out));
}

int main() {
	int a[] = {1,2,3,4};
	int b[] = {5,6,7,8};
	int c[8];
	
	join_container(a, b, c);
	
	for(int x : c) cout << x << endl;
	
	return 0;
}
