let () = Scanf.scanf "%d\n" @@ fun n ->
  let xys = Array.init n @@ fun i ->
    Scanf.scanf "%d %d\n" @@ fun x y -> i, x, y in
  let (i, px, py), rest = Array.fold_left (fun ((i, x, y), acc) (j, x', y') ->
    if y <= y'
    then ((i, x, y), (j, x', y') :: acc)
    else ((j, x', y'), (i, x, y) :: acc)) (xys.(0), []) @@ Array.sub xys 1 (n - 1) in
  let convex =
    Array.of_list @@
    List.fold_left (fun stack (i, x, y) ->
      let rec drop = function
        | ([] | [_]) as stack -> stack
        | ((_, x1, y1) :: (((_, x2, y2) :: _) as rest)) as stack ->
            if (x2 - x1) * (y - y1) - (y2 - y1) * (x - x1) <= 0
            then stack
            else drop rest in (i, x, y) :: drop stack) [(i, px, py)] @@
    List.sort (fun (_, x, y) (_, x', y') ->
      compare
        (x <= px, (y - py) * (x' - px))
        (x' <= px, (y' - py) * (x - px))) rest in
  let ps = Array.make n 0. in
  for i = 0 to Array.length convex - 1 do
    let (_, x1, y1) = convex.(i) in
    let (j, x2, y2) = convex.((i + 1) mod Array.length convex) in
    let (_, x3, y3) = convex.((i + 2) mod Array.length convex) in
    ps.(j) <-
      0.5 -. acos
        (float_of_int ((x1 - x2) * (x3 - x2) + (y1 - y2) * (y3 - y2)) /.
         sqrt
           ((float_of_int (x1 - x2) ** 2. +. float_of_int (y1 - y2) ** 2.) *.
            (float_of_int (x3 - x2) ** 2. +. float_of_int (y3 - y2) ** 2.)))
      /. (8. *. atan 1.)
  done;
  Array.iter (Printf.printf "%.20f\n") ps
