#include <bits/stdc++.h>
using namespace std;
long long N,M,NIZ1[50005][5],NIZ2[50005][5],RAZ,X,Y,xmax,ymax,xmin,ymin,br;
void f1(){
  if(xmax>=ymax){
    printf("%lld\n",ymax);
    printf("%lld\n",M);
    for(int i=1;i<=M;i++){
        printf("%lld ",NIZ2[i][2]);
    }
  }
  else{
      br=ymax-xmax;
    printf("%lld\n",xmax);
    printf("%lld\n",M);
    for(int i=1;i<=M;i++){
    RAZ=NIZ2[i][2]-NIZ2[i][1];
    if(RAZ>br){
    NIZ2[i][2]-=br;
    br=0;
    }
    else{
      NIZ2[i][2]=NIZ2[i][1];
      br-=NIZ2[i][1];
    }
     if(br==0)break;
    }
    for(int i=1;i<=M;i++){
        printf("%lld ",NIZ2[i][2]);
    }
    }
}
int main(){
  cin>>N>>M;
  for(int i=1;i<=N;i++){
    scanf("%lld",&X);
    scanf("%lld",&Y);
    NIZ1[i][1]=X;
    NIZ1[i][2]=Y;
    xmax+=Y;
    xmin+=X;

  }
  for(int i=1;i<=M;i++){
    scanf("%lld",&X);
    scanf("%lld",&Y);
    NIZ2[i][1]=X;
    NIZ2[i][2]=Y;
    ymax+=Y;
    ymin+=X;
  }
  if(N==1)f1();
 return 0;
}