#include <bits/stdc++.h>
using namespace std;
const int N = 100005;
const double pi = acos(-1);
int n;
vector<double> a;
struct point {
  double x, y;
  void read() { scanf("%lf%lf", &x, &y); }
  void write() { printf("%.5f %.5f ", x, y); }
  void init(double xx, double yy) {
    x = xx;
    y = yy;
  }
  bool operator<(const point &b) const {
    return (x < b.x || (x == b.x && y < b.y));
  }
  double dist(point b) {
    return sqrt((b.x - x) * (b.x - x) + (b.y - y) * (b.y - y));
  }
} p;
double angle(point p) {
  if (p.x == 0) {
    if (p.y > 0) {
      return pi / 2;
    } else {
      return 1.5 * pi;
    }
  }
  if (p.y == 0) {
    if (p.x > 0) {
      return 0;
    } else {
      return pi;
    }
  }
  if (p.x > 0) {
    if (p.y > 0) {
      return atan(p.y / p.x);
    } else {
      return 1.5 * pi + (-atan(p.x / p.y));
    }
  }
  if (p.x < 0) {
    if (p.y > 0) {
      return pi / 2 + (-atan(p.x / p.y));
    } else {
      return pi + atan(p.y / p.x);
    }
  }
}
int main() {
  scanf("%d", &n);
  for (int i = 1; i <= n; i++) {
    p.read();
    a.push_back(angle(p));
  }
  sort(a.begin(), a.end());
  double alpha = 0;
  for (int i = 0; i < n - 1; i++) {
    alpha = max(alpha, a[i + 1] - a[i]);
  }
  alpha = max(alpha, 2 * pi - (a[n - 1] - a[0]));
  printf("%.10f", 360 - alpha * 180 / pi);
  return 0;
}
