시에르핀스키 미로에서 모이기

아직 제출이 없습니다시간 제한3초메모리 제한512 MB

문제

체코에서 온 관광객 무리가 스스로를 닮은 이상한 모양의 미로를 걷고 있다. 미로의 평면도는 폴란드 수학자 바츠와프 시에르핀스키의 이름을 딴 프랙털인 시에르핀스키 삼각형이다.

미로는 위에서 아래로 00번부터 109110^9 - 1번까지 번호가 붙은 10억 개의 행과, 왼쪽에서 오른쪽으로 00번부터 109110^9 - 1번까지 번호가 붙은 10억 개의 열로 이루어진다. 각 칸은 빈 칸이거나 막힌 칸이다.

XXYY열의 칸은 XXYY의 비트 AND 연산 결과가 00이면 빈 칸이고, 그렇지 않으면 막힌 칸이다. 다시 말해 XXYY를 이진수로 적었을 때 오른쪽에서 kk번째 자리가 둘 다 11kk가 존재하면 그 칸은 막혀 있다.

관광객들은 하루 종일 헤매고 다녀서 지쳤고, 빈 칸 하나에 모여 각자의 경험을 나누려고 한다. 한 번의 이동에서 관광객 한 명은 위, 아래, 왼쪽, 오른쪽으로 인접한 빈 칸 하나로 뛸 수 있다.

관광객들의 현재 위치가 주어지면 모두가 같은 칸에 모이는 데 필요한 전체 이동 횟수의 최솟값을 구하는 프로그램을 작성하시오.

입력

첫째 줄에 관광객의 수 NN이 주어진다. (1N1000001 \le N \le 100000)

다음 NN개 줄에는 ii번째 관광객이 서 있는 칸의 행 번호 RiR_i와 열 번호 SiS_i가 공백을 사이에 두고 주어진다. (0Ri,Si10910 \le R_i, S_i \le 10^9 - 1)

모든 관광객은 빈 칸에 서 있다. 즉 RiR_iSiS_i의 비트 AND 연산 결과는 00이다. 한 칸에 관광객이 여러 명 서 있을 수도 있다.

출력

첫째 줄에 필요한 이동 횟수의 최솟값을 출력한다.

답이 32비트 정수의 범위를 넘을 수 있으므로 64비트 정수 자료형(C나 C++의 long long, 파스칼의 int64)을 쓰는 편이 좋다.

힌트

첫 번째 예제에서 관광객들이 모일 수 있는 칸 중 하나는 (2, 0)이다.

두 번째 예제에서 관광객들이 모일 수 있는 칸 중 하나는 (8, 4)이다.