import java.util.* ;
import java.io.* ;
public class Reset_tgr {
   static class dat {
      dat(long d_, long t_) {
         d = d_ ;
         t = t_ ;
      }
      long d, t ;
   }
   static dat[] dt ;
   static int n, c ;
   static boolean cando(long v) {
      long researchleft = (v - 1) * c ;
      long flex = 0 ;
      long lastleft = c ;
      for (int i=0; i<n; i++) {
         long cnt = Math.min(v, 1 + (dt[i].t - 1) / dt[i].d) ;
         researchleft -= cnt-1 ;
         if (cnt == v)
            lastleft -= 1 + Math.max(0, dt[i].t - cnt * dt[i].d) ;
         else
            flex++ ;
      }
      return lastleft >= 0 && researchleft + lastleft >= flex ;
   }
   public static void main(String[] args) {
      Scanner sc = new Scanner(System.in) ;
      n = sc.nextInt() ;
      c = sc.nextInt() ;
      dt = new dat[n] ;
      for (int i=0; i<n; i++) {
         long t = sc.nextLong() ;
         long d = sc.nextLong() ;
         dt[i] = new dat(d, t) ;
      }
      long b = 1 ;
      long hi = 0 ;
      for (; !cando(hi); b<<=1)
         hi = b ;
      for (; b != 0; b >>= 1)
         if (hi > b && cando(hi - b))
            hi -= b ;
      System.out.println(hi-1) ;
   }
}
