#include<bits/stdc++.h>
using namespace std;
void rd(int &x){
  int k, m=0;
  x=0;
  for(;;){
    k = getchar_unlocked();
    if(k=='-'){
      m=1;
      break;
    }
    if('0'<=k&&k<='9'){
      x=k-'0';
      break;
    }
  }
  for(;;){
    k = getchar_unlocked();
    if(k<'0'||k>'9'){
      break;
    }
    x=x*10+k-'0';
  }
  if(m){
    x=-x;
  }
}
void wt_L(int x){
  char f[10];
  int m=0, s=0;
  if(x<0){
    m=1;
    x=-x;
  }
  while(x){
    f[s++]=x%10;
    x/=10;
  }
  if(!s){
    f[s++]=0;
  }
  if(m){
    putchar_unlocked('-');
  }
  while(s--){
    putchar_unlocked(f[s]+'0');
  }
}
void wt_L(long long x){
  char f[20];
  int m=0, s=0;
  if(x<0){
    m=1;
    x=-x;
  }
  while(x){
    f[s++]=x%10;
    x/=10;
  }
  if(!s){
    f[s++]=0;
  }
  if(m){
    putchar_unlocked('-');
  }
  while(s--){
    putchar_unlocked(f[s]+'0');
  }
}
int N, P[200000], S, X[200000], ms, mv[200000];
int main(){
  int a, b, f, i, j, k, mode;
  long long res=0, sum=0, tmp;
  rd(N);
  rd(S);
  {
    int Lj4PdHRW;
    for(Lj4PdHRW=0;Lj4PdHRW<N;Lj4PdHRW++){
      rd(X[Lj4PdHRW]);
      rd(P[Lj4PdHRW]);
    }
  }
  if(S < X[0]){
    wt_L(X[N-1] - S);
    putchar_unlocked('\n');
    return 0;
  }
  if(S > X[N-1]){
    wt_L(S - X[0]);
    putchar_unlocked('\n');
    return 0;
  }
  a = 0;
  b = N-1;
  if(P[a] >= P[b]){
    sum += P[b];
    mv[ms++] = X[b];
    b--;
    mode = 0;
  }
  else{
    sum += P[a];
    mv[ms++] = X[a];
    a++;
    mode = 1;
  }
  f = 0;
  for(;;){
    if(mode==0){
      tmp = 0;
      for(;;){
        if(X[a] > S){
          f=1;
          break;
        }
        tmp = P[a];
        a++;
        if(tmp >= sum){
          break;
        }
        sum += tmp;
      }
      if(f){
        break;
      }
      mv[ms++] = X[a-1];
      sum += tmp;
    }
    else{
      tmp = 0;
      for(;;){
        if(X[b] < S){
          f=1;
          break;
        }
        tmp = P[b];
        b--;
        if(tmp > sum){
          break;
        }
        sum += tmp;
      }
      if(f){
        break;
      }
      mv[ms++] = X[b+1];
      sum += tmp;
    }
    mode ^= 1;
  }
  for(i=ms-1;i>=0;i--){
    res += abs(S - mv[i]);
    S = mv[i];
  }
  wt_L(res);
  putchar_unlocked('\n');
  return 0;
}
// cLay varsion 20180303-1 [beta]

// --- original code ---
// int N, S, X[2d5], P[2d5];
// 
// int mv[2d5], ms;
// 
// {
//   int i, j, k, f;
//   int a, b, mode;
//   ll sum = 0, res = 0, tmp;
// 
//   rd(N,S,(X,P)(N));
// 
//   if(S < X[0]){
//     wt(X[N-1] - S);
//     return 0;
//   }
// 
//   if(S > X[N-1]){
//     wt(S - X[0]);
//     return 0;
//   }
// 
//   a = 0;
//   b = N-1;
//   if(P[a] >= P[b]){
//     sum += P[b];
//     mv[ms++] = X[b];
//     b--;
//     mode = 0;
//   } else {
//     sum += P[a];
//     mv[ms++] = X[a];
//     a++;
//     mode = 1;
//   }
// 
//   f = 0;
//   for(;;){
//     if(mode==0){
//       tmp = 0;
//       for(;;){
//         if(X[a] > S){ f=1; break; }
//         tmp = P[a];
//         a++;
//         if(tmp >= sum) break;
//         sum += tmp;
//       }
//       if(f) break;
// 
//       mv[ms++] = X[a-1];
//       sum += tmp;
//     } else {
//       tmp = 0;
//       for(;;){
//         if(X[b] < S){ f=1; break; }
//         tmp = P[b];
//         b--;
//         if(tmp > sum) break;
//         sum += tmp;
//       }
//       if(f) break;
// 
//       mv[ms++] = X[b+1];
//       sum += tmp;
//     }
//     mode ^= 1;
//   }
// 
//   for(i=ms-1;i>=0;i--){
//     res += abs(S - mv[i]);
// //    wtF("{S} -> {mv[i]} : {res}\n");
//     S = mv[i];
//   }
//   wt(res);
// }


Measured memory_bytes: 1024