let rec power ( * ) e m n =
  if n <= 0 then e
  else power ( * ) (if n land 1 = 0 then e else m * e) (m * m) (n lsr 1)

let m = 1000000007
let ( +^ ) x y = (x + y) mod m
let ( -^ ) x y = x +^ (m - y)
let ( *^ ) x y = (x * y) mod m

let perm n k =
  Array.fold_left ( *^ ) 1 @@
  Array.init k @@ ( +^ ) (n - k + 1)
let comb n k = power ( *^ ) (perm n k) (perm k k) (m - 2)

let f r c = comb (r + c) (min r c) -^ 1

let () = Scanf.scanf "%d %d %d %d" @@ fun r1 c1 r2 c2 ->
  Printf.printf "%d\n" @@
  f (r2 + 1) (c2 + 1)
  -^ f (r2 + 1) c1
  -^ f r1 (c2 + 1)
  +^ f r1 c1
