#include <bits/stdc++.h>
using namespace std;
struct Tpoint {
  int x, y;
  double angle;
} v[100005];
int dcmp(double d) {
  if (fabs(d) > 1e-12) {
    if (d > 1e-12)
      return 1;
    else
      return -1;
  } else
    return 0;
}
int cmp(const void *a, const void *b) {
  Tpoint p1 = *(Tpoint *)a, p2 = *(Tpoint *)b;
  return dcmp(p1.angle - p2.angle);
}
int main() {
  int n, i;
  double ans, temp;
  scanf("%d", &n);
  for (i = 1; i <= n; i++) {
    scanf("%d%d", &v[i].x, &v[i].y);
    if (v[i].x == 0) {
      if (v[i].y > 0)
        v[i].angle = 3.1415926535897932384626433832795 / 2;
      else
        v[i].angle = -3.1415926535897932384626433832795 / 2;
    } else
      v[i].angle = atan((double)v[i].y / v[i].x);
    if (v[i].x < 0) v[i].angle += 3.1415926535897932384626433832795;
    v[i].angle = (v[i].angle * 360) / (2 * 3.1415926535897932384626433832795);
    v[i].angle = (v[i].angle + 360);
    while (v[i].angle >= 360) v[i].angle -= 360;
  }
  qsort(v + 1, n, sizeof(Tpoint), cmp);
  v[++n] = v[1];
  ans = 0;
  for (i = 1; i < n; i++) {
    temp = v[i + 1].angle - v[i].angle;
    temp += 360;
    while (temp >= 360) temp -= 360;
    ans = max(ans, temp);
  }
  if (dcmp(ans - 0) == 0)
    printf("0.0000000000");
  else
    printf("%.10lf", 360 - ans);
  return 0;
}
