#include<iostream>
#include<algorithm>
#include<cassert>
#include<map>
#include<vector>

using namespace std;
#define REP(i,b,n) for(int i=b;i<n;i++)
#define rep(i,n)   REP(i,0,n)

typedef long long ll;
typedef pair<int,int> pii;
typedef pair<ll,ll> pll;
const int D=1;
const ll inf = 1LL<<60;

vector<pll> precalc(const vector<pair<ll,ll> >  in,bool flag){
  vector<pll> ret;
  int n = in.size();
  //yÀWÌ³kAÅ¬lßÄ¨­
  map<ll,int> M;
  vector<ll> all;
  rep(i,(int)in.size()){
    if (flag){
      M[in[i].first]++;
      all.push_back(in[i].first);
    }else {
      M[in[i].second]++;
      all.push_back(in[i].second);
    }
  }
  sort(all.begin(),all.end());
  all.erase(unique(all.begin(),all.end()),all.end());

  //yÀWªêÔ¬³¢ê©ç·×ÄÌÆÜÅÌ£ðvZµÄ¨­
  int num = M[all[0]];
  ll pos = 2*num;
  ll neg = 2*(n-num);
  ll prev = all[0];
   ll cur=0;
   rep(i,(int)in.size()){
     if (flag)cur = cur + 2*((ll)in[i].first-(ll)all[0]);
     else cur = cur + 2*((ll)in[i].second-(ll)all[0]);
   }
   ret.push_back(make_pair(cur,all[0]));

   //½ÊìÁÛ¢±ÆðµÄAeyÀW©çÆÜÅÌ£ÌaðvZµÄ¨­B
   REP(i,1,all.size()){
     ll fir = all[i];
     int sec=M[all[i]];
     ll diff = fir - prev;
     cur = cur + (pos * diff);
     cur = cur - (neg * diff);
     neg=neg-(sec*2);
     pos=pos+(sec*2);
     assert(neg+pos == 2*n);
     prev = fir;
     ret.push_back(make_pair(cur,fir));
   }
   return ret;
 }

//STõ
 void bf(vector<pair<ll,ll> > &in,ll tans,ll tansx,ll tansy){
   vector<ll> x,y;
   rep(i,in.size()){
     swap(in[i].second,in[i].first);
     x.push_back(in[i].second);
     y.push_back(in[i].first);
   }
   sort(x.begin(),x.end());x.erase(unique(x.begin(),x.end()),x.end());
   sort(y.begin(),y.end());y.erase(unique(y.begin(),y.end()),y.end());
   ll ans = inf;
   ll ansx,ansy;
   rep(i,y.size()){
     rep(j,x.size()){
       vector<ll> dist;
       rep(k,in.size()){
	 dist.push_back(llabs(in[k].second-x[j])+llabs(in[k].first-y[i]));
       }
       sort(dist.begin(),dist.end());
       ll tmp = 0;
       rep(k,dist.size()){
	 tmp += dist[k]*2;
       }
       tmp -= dist[dist.size()-1];
       if (tmp < ans){
	 ans = tmp;
	 ansy = x[j];
	 ansx = y[i];
       }else if (tmp == ans && x[j] < ansx){
	 ans = tmp;
	 ansx = x[j];
	 ansy = y[i];
       }else if (tmp == ans && x[j] == ansx && y[i] < ansy){
	 ans = tmp;
	 ansx = x[j];
	 ansy = y[i];
       }
     }
   }
   //cout << "brute force " << endl;
   //cout << ans <<endl << ansy <<" " << ansx << endl;
 }

/*
  ðûjB
  ðµÈ¢ÆªPÂ éÆ¢¤ðð³·éêB
  eÆª¯¶êÉñÓ éÆl¦ÄâéB
  x,yÀWÍÆ§Él¦çé±ÆªÅ«éB
  xÀWÌ£ÌaªÅà¬³¢ÊuÍAÇê©ÌÆÆÀWªêv·éêÉ é(Otðl¦ÄÝéÆí©é)
  Æ¢¤ÌÍæÔÌrÅ êÎÇ¿ç©É¸çµ½Ù¤ªaª¬³­Èé©çÅ éBiÀWÌÔÌOtÌX«Íµ¢B)
  yÀWà¯lB
  ðµÈ¢Æ¢¤ðð³µÄ¢éÌÅA±ÌÌ¦ÍxÀW©çÌ£ªÅ¬ÉÈé_ÆyÀW©çÌ£ªÅ¬ÉÈé_ÌaÉÈéB

  ðµÈ¢Æðl¦éêB
  Ü¸P³Ål¦éB
  ðµÈ¢_ðæè¢ÄÝéÆæÙÇl¦½OtÉá±ÌÏ»ª éB( éæÔÅÌX«ªÏ»·é)
  ½¾µ±êÉæée¿Í»±ÜÅå«­È­AæÙÇl¦½OtÌÅ¬ÆÈé_ª1¸êéÂ\«ª é¾¯Å éB
  ÈÌÅæè­ÆiµÈ¢ÆjðßÅ¿µÄA
  ðl¦½êÉ ÆÍÅ¬ÉÈél(2*2=4Êè)Ìüèð²×êÎ\ªÅ éB
 */

 main(){
   ll w,h;
   int n;
   while(cin>>w>>h){
     cin>>n;
     vector<pair<ll,ll> > in(n);
     //input is x,y
     rep(i,n){
       cin>>in[i].first>>in[i].second;
     }
     vector<pll> y,x;//XRAAÀWÌyA
     map<ll,int> X,Y;
     x = precalc(in,false);
     y = precalc(in,true);

     //xÀWAyÀWA»ê¼ê£ÌaªÅ¬ÉÈé_ÌÊuðvZµÄ¨­
     //±êÍ½©¾©QÂiRÂHjµ©¶ÝµÈ¢Í¸
     int mx = 0,my=0;
     vector<int> mxs,mys;
     rep(i,(int)x.size()){
       X[x[i].second]=i;
       if (x[i].first < x[mx].first)mx = i;
       else if (x[i].first == x[mx].first && x[i].second < x[mx].second)mx = i;
     }
     rep(i,x.size())if (x[i].first == x[mx].first)mxs.push_back(i);
     rep(i,(int)y.size()){
       Y[y[i].second]=i;
       if (y[i].first < y[my].first)my = i;    
       else if (y[i].first == y[my].first && y[i].second < y[my].second)my = i;
     }
     rep(i,y.size())if (y[i].first == y[my].first)mys.push_back(i);

     //ðsíÈ¢ÆðßÅ¿µÄA·éêÌÅ¬lüÓð²×éB
     ll ansx=-1,ansy=-1;
     ll ans = inf;
     rep(k,(int)in.size()){
       rep(ii,mys.size()){
	 rep(jj,mxs.size()){
	   REP(i,max(0,mys[ii]-D),min(mys[ii]+D,(int)y.size())){
	     REP(j,max(0,mxs[jj]-D),min(mxs[jj]+D,(int)x.size())){
	       ll tmp = y[i].first;
	       tmp = tmp + x[j].first;
	       tmp = tmp - llabs(y[i].second-in[k].first);
	       tmp = tmp - llabs(x[j].second-in[k].second); 
	       ll ty=y[i].second;
	       ll tx=x[j].second;
	       if (tmp < ans || (tmp == ans && ty < ansy) || (tmp == ans && ty == ansy && tx < ansx) ){
		 ans = tmp;
		 ansx = tx;
		 ansy = ty;
	       }
	     }
	   }
	 }
       }
    }
    assert(ansx != -1);
    cout << ans << endl;
    cout << ansy <<" " << ansx << endl;
  }
}

Measured memory_bytes: 11000