program ler_e_imprimir_pares_indices;

const 
	min = 1; 
	max = 200;

type vetor = array [min..max] of longint;

var 
	v, w, resultado : vetor;
	n, m, tam_resultado : longint;

procedure imprimir (var v : vetor; tam : longint);
var i : longint;
begin
	for i:= 1 to tam do
		write (v[i], ' ');
	writeln;
end;

procedure ler (var v : vetor; var tam: longint); (* leitura *)
var i : longint;
begin
	writeln ('Qual o tamanho do vetor? ');
	read (tam); (* 1 <= tam <= 200, define o tamanho util do vetor *)
	for i := 1 to tam do
		read (v[i]);
end;

procedure merge (var vR, v1, v2: vetor; var nR: longint; n1, n2: longint);
var iR, i1, i2: integer;
begin
	iR:= 1;	i1:= 1;	i2:= 1;
	
	while (i1 <= n1) and (i2 <= n2) do
	begin
		if v1[i1] < v2[i2] then
		begin
			vR[iR] := v1[i1];
			i1 := i1 + 1;
		end
		else
		begin
			vR[iR] := v2[i2];
			i2 := i2 + 1;
		end;
		iR := iR + 1;
	end;
	
	if i1 <= n1 then
		for i1 := i1 to n1 do
		begin
			vR[iR] := v1[i1];
			iR := iR + 1;
		end
	else
		for i2 := i2 to n2 do
		begin
			vR[iR] := v2[i2];
			iR := iR + 1;
		end;
	nR := n1 + n2;

	imprimir (resultado, tam_resultado);
end;

begin (* programa principal *)
	ler (v, n);
	imprimir (v, n);
	ler (w, m);
	imprimir (w, m);
	merge (resultado, v, w, tam_resultado, n, m);
end.
