## 間違ってるけどコード保存用

import numpy as np
from copy import deepcopy

N, A, B, C = map(int,input().split())
L = [list(map(int,input().split())) for i in range(N)]

L = np.array(L)
max_merge = N-3
#min_MP = float('Inf')

## 合成なし増減させるのみで達成されるうちの最小MPを出力
## これだと自明に違うとわかった...
def bamboo2MP_nomerge(bamboo, A, B, C):
  arr = deepcopy(bamboo)
  n_bamboo = len(arr)
  bamboo_A = np.argmin(np.abs(arr-A))
  MP_A = np.abs(arr[bamboo_A]-A)
  np.delete(arr, MP_A)
  bamboo_B = np.argmin(np.abs(arr-B))
  MP_B = np.abs(arr[bamboo_B]-B)
  np.delete(arr, MP_B)
  bamboo_C = np.argmin(np.abs(arr-C))
  MP_C = np.abs(arr[bamboo_C]-C)
  #np.delete(arr, MP_C)
  return int(MP_A + MP_B + MP_C)
  

## 合成0回の時の最小MPを取得
min_MP = bamboo2MP_nomerge(L, A, B, C)
  
## 合成ありの時の最小MPを取得  
#for i in range(max_merge):
  
print(min_MP)
  