#include <bits/stdc++.h>
using namespace std;
template <class T>
bool chmax(T &a, const T &b) {
  if (a < b) {
    a = b;
    return true;
  }
  return false;
}
template <class T>
bool chmin(T &a, const T &b) {
  if (a > b) {
    a = b;
    return true;
  }
  return false;
}
template <class T>
T div_floor(T a, T b) {
  if (b < 0) a *= -1, b *= -1;
  return a >= 0 ? a / b : (a + 1) / b - 1;
}
template <class T>
T div_ceil(T a, T b) {
  if (b < 0) a *= -1, b *= -1;
  return a > 0 ? (a - 1) / b + 1 : a / b;
}
constexpr long long mod = 1000000007;
constexpr long long INF = mod * mod;
constexpr int MAX = 200010;
struct ConvexHullTrick {
  deque<pair<long long, long long> > dq;
  long long x;
  ConvexHullTrick() : x(0) {}
  long long f(long long a, long long b) { return (a - 1) * x - b; }
  void add(long long a, long long b) {
    while (!dq.empty()) {
      auto [s, t] = dq.back();
      long long l = f(s, t), r = f(a, b);
      if ((double)a * l <= (double)s * r) {
        dq.pop_back();
      } else {
        break;
      }
    }
    dq.emplace_back(a, b);
  }
  void set_x(long long y) {
    x = y;
    while (dq.size() >= 2) {
      auto [s, t] = dq[0];
      auto [a, b] = dq[1];
      long long l = f(s, t), r = f(a, b);
      if ((double)a * l <= (double)s * r) {
        dq.pop_front();
      } else {
        break;
      }
    }
  }
  double get_max() {
    if (dq.empty()) return 0;
    auto [s, t] = dq[0];
    return max(0.0, (double)f(s, t) / (double)s);
  }
};
int main() {
  int q;
  scanf("%d", &q);
  ConvexHullTrick cht;
  int sz = 0;
  long long sum = 0;
  for (int((_)) = (int)(0); ((_)) < (int)((q)); ++((_))) {
    int t;
    scanf("%d", &t);
    if (t == 1) {
      ++sz;
      if (sz >= 2) cht.add(sz, sum);
      int x;
      scanf("%d", &x);
      cht.set_x(x);
      sum += x;
    } else {
      printf("%.10lf\n", cht.get_max());
    }
  }
}
