program arq_vet;

const tam_vet   =  100;
type tipo_vetor	= array [1..tam_vet] of integer;
     tipo_nome	= string[40]; 

procedure le(nome_arq: tipo_nome ; var vet: tipo_vetor; var n: integer);
var
   i	    : integer;
   arq	    : text;
begin
   assign(arq, nome_arq);
   reset (arq);
   readln(arq, n);
   if (n > tam_vet) then
      n := tam_vet;
   for i:= 1 to n do
      readln (arq, vet[i]);
   close(arq);
end; 

procedure escreve(nome_arq: tipo_nome; var vet: tipo_vetor; var n: integer);
var
   i	    : integer;
   arq	    : text;
begin
   assign(arq, nome_arq);
   rewrite(arq);
   writeln(arq, n);
   for i:= 1 to n do
      writeln (arq, vet[i]);
   close(arq);
end; 

procedure intercala (nome_arq : tipo_nome;
		     var vet1, vet2: tipo_vetor; n1, n2: integer);
var
   i   : integer;
   arq : text;
begin
   assign(arq, nome_arq);
   rewrite (arq);
   writeln(arq, n1 + n2);
   i := 1;
   while (i <= n1) and (i <= n2) do
   begin
      writeln(arq, vet1[i]);
      writeln(arq, vet2[i]);
      i := i + 1;
   end;
   for i := i to n1 do
      writeln(arq, vet1[i]);
   for i := i to n2 do
      writeln(arq, vet2[i]);
end; 

var
   vet1, vet2 : tipo_vetor;
   n1, n2     : integer;
begin
   le('dados1.txt', vet1, n1);
   le('dados2.txt', vet2, n2);
   escreve('saida.txt', vet1, n1);
   intercala('intercala.txt', vet1, vet2, n1, n2);
end.
