{$APPTYPE CONSOLE}
program problem_e;
const
      filein  = 'e.in';
      fileout = 'e.out';
      maxn    = 100100;
var
      i,j,k,l,m,n     : longint;
      a,b             : array [0..maxn] of longint;
      ans             : longint;
{-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=}
procedure  sortb(l,r:longint);
var
    i,j   : longint;
    x,y   : longint;
begin
  i:=l; j:=r; x:=b[(i+j)div 2];
  repeat
    while (i<r)and(b[i]<x) do inc(i);
    while (j>l)and(b[j]>x) do dec(j);
    if i<=j then
      begin
        y:=b[i]; b[i]:=b[j]; b[j]:=y;
        inc(i); dec(j);
      end;
  until i>=j;
  if l<j then sortb(l,j);
  if r>i then sortb(i,r);
end;
{-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=}
procedure  sorta(l,r:longint);
var
    i,j   : longint;
    x,y   : longint;
begin
  i:=l; j:=r; x:=a[(i+j)div 2];
  repeat
    while (i<r)and(a[i]<x) do inc(i);
    while (j>l)and(a[j]>x) do dec(j);
    if i<=j then
      begin
        y:=a[i]; a[i]:=a[j]; a[j]:=y;
        inc(i); dec(j);
      end;
  until i>=j;
  if l<j then sorta(l,j);
  if r>i then sorta(i,r);
end;
{-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=}
begin
  assign(input,filein); reset(input);
  assign(output,fileout); rewrite(output);
    read(n,m);
      for i:=1 to n do  read(a[i]);
      for i:=1 to m do  read(b[i]);
    sorta(1,n);
    sortb(1,m);
    if n>m then k:=m else k:=n;
    ans:=0;
    for i:=1 to k do ans:=ans+a[i]*b[k-i+1];
    writeln(k,' ',ans);
  close(input); close(output);
end.
 