#include <iostream>
#include <algorithm>
//#define DEBUG

using std::endl;
constexpr int64_t INF = 100000000010000000;

int32_t N,W,H;
int64_t X[100000];
int64_t Y[100000];
int64_t sX[100000];
int64_t sY[100000];
int64_t mid_diff_x = 0;
int64_t mid_diff_y = 0;

int main()
{
	std::cin >> W>>H;
	std::cin >> N;
	for(int i = 0;i < N;++i){
		std::cin >> X[i]>>Y[i];
		sX[i] = X[i];sY[i] = Y[i];
	}
	if(N == 1){std::cout << 0<<endl<<X[0]<<' '<<Y[0]<<endl;return 0;}
	
	std::sort(sX,sX+N);
	std::sort(sY,sY+N);
	for(int i = 0;i < N;++i){
		mid_diff_x += std::abs(X[i] - sX[N/2]);
		mid_diff_y += std::abs(Y[i] - sY[N/2]);
	}
	#ifdef DEBUG
	printf("mid_diff = (%ld, %ld)\n",mid_diff_x, mid_diff_y); 
	#endif
	int32_t round_b_x = 1000000, round_b_y = 1000000;
	int64_t diff_min = INF;
	for(int32_t ignore = 0;ignore < N;++ignore)
	{
		auto run = [](
			int32_t& round,
			int64_t& diff,
			int64_t mid_diff,
			int64_t ignore_pos,
			int64_t S[]
			){
				int32_t mid_index = N/2;
				diff = mid_diff;
				//????????§???mid_index???end??´??????????????????
				//mid_index?????????????????¨??????????????´?????????
				if(ignore_pos < S[mid_index]){
					//????????????
				}
				else if(ignore_pos == S[mid_index]){
					if(S[mid_index-1] == S[mid_index]){
						//??????????????°????????§??????????¶?????????¨??????
					}
					else{
						//???????????????
						//???(mid??????)?????°-????????°=(N-mid_index_x)-mid_index_x
						diff += (S[mid_index] - S[mid_index-1])*(N-2*mid_index);
						--mid_index;
					}
				}
				else{
					//???????????????
					//???(mid??????)?????°-????????°=(N-mid_index_x)-mid_index_x
					diff += (S[mid_index] - S[mid_index-1])*(N-2*mid_index);
					--mid_index;
				}
	#ifdef DEBUG
		printf("mid_index = (%d)\n",mid_index);
	#endif
				//????????§???mid_index???0??´??????????????????
				//????????????????????¢????????´
				diff -= std::abs(S[mid_index] - ignore_pos);
				diff *= 2;
	#ifdef DEBUG
		printf("diff = (%d)\n",diff);
	#endif
				if(((N-1)&1)==0){
					//round_x???[S[mid_index], S[mid_index+1]]?????????
					if(ignore_pos < S[mid_index]){
						diff += (S[mid_index] - ignore_pos);
						round = S[mid_index];
					}
					else if(ignore_pos <= S[mid_index+1]){
						//diff += 0;
						round = ignore_pos;
					}
					else{
						diff += (ignore_pos - S[mid_index+1]);
						round = S[mid_index+1];
					}
				}
				else{
					//????´????????????????????????¢
					diff += std::abs(S[mid_index] - ignore_pos);
					round = S[mid_index];
				}
			};
		int32_t round_x, round_y;
		int64_t diff_x, diff_y;
		run(round_x, diff_x, mid_diff_x, X[ignore], sX);
		run(round_y, diff_y, mid_diff_y, Y[ignore], sY);
	#ifdef DEBUG
		printf("ignore = (%d)\n",ignore);
		printf("round  = (%d,%d)\n",round_x, round_y);
		printf("diff   = (%ld,%ld)\n",diff_x, diff_y); 
	#endif
		auto diff_total = diff_x + diff_y;
		if ((diff_total < diff_min) ||
		    (
				diff_total == diff_min &&
				std::make_pair(round_x, round_y) < std::make_pair(round_b_x, round_b_y)
		    )
		    ){
			diff_min = diff_x + diff_y;
			round_b_x = round_x;
			round_b_y = round_y;
		}
	}
	
	std::cout << diff_min << endl
	 << round_b_x << ' ' << round_b_y << endl;
	
}

Measured memory_bytes: 6204