program razgovori;

type detector_rec = record
    p : integer;
    c : longint;
end;

var n, i, j, min, max : integer;
    m, r : longint;
    d : array[1..100000] of detector_rec;
    calls : boolean;

begin
    readln(n, m);
    for i := 1 to n do
        readln(d[i].p, d[i].c);

    if n = 1 then
        writeln(d[1].c)
    else begin
    for i := 1 to n do
        for j := i+1 to n do
            if d[i].p > d[j].p then begin
                r := d[i].p;
                d[i].p := d[j].p;
                d[j].p := r;
                r := d[i].c;
                d[i].c := d[j].c;
                d[j].c := r;
            end;
    r := 0;
    repeat

        i := 0;
        repeat
            inc(i);
        until (i = n) or not (d[i].c = 0);
        if not (d[i].c = 0) then min := d[i].p;

        max := min;
        repeat
            inc(i);
        until (i = n) or (d[i].c = 0);
        if (d[i].c = 0) and (not (d[i-1].c = 0)) then max := d[i-1].p
        else if not (d[i].c = 0) then max := d[i].p;

        for i := 1 to n do begin
            if (d[i].p >= min) and (d[i].p <= max) then
                dec(d[i].c);
        end;
        inc(r);

        calls := false;
        for i := 1 to n do
            if not (d[i].c = 0) then
                calls := true;

    until not calls;
    writeln(r);
    end;
end.