#include <bits/stdc++.h>
using namespace std;
const int N = 8;
const int M = 100010;
const int INF = 1 << 30;
int n, q;
map<int, int> sum, val;
void init() {
  sum.clear();
  val.clear();
}
void add(int p, int v) {
  if (val.find(p) == val.end()) val[p] = 0;
  val[p] += v;
  while (p) {
    if (sum.find(p) == sum.end()) sum[p] = 0;
    sum[p] += v;
    p /= 2;
  }
}
double dfs(int h, int u, double Max) {
  if (h == n) {
    if (val.find(u) == val.end())
      return 0.0;
    else
      return max(Max, (double)val[u]);
  }
  int l = u * 2, r = u * 2 + 1;
  double ans1 = max(Max, double(sum[u] - sum[l]));
  double ans2 = max(Max, double(sum[u] - sum[r]));
  if ((double)sum[l] > Max) ans1 = max(ans1, dfs(h + 1, l, ans1));
  if ((double)sum[r] > Max) ans2 = max(ans2, dfs(h + 1, r, ans2));
  return (ans1 + ans2) * 0.5;
}
void solve() {
  char qry[3];
  while (q--) {
    scanf("%s", &qry);
    if (qry[0] == 'a') {
      int p, v;
      scanf("%d %d", &p, &v);
      add(p, v);
    } else {
      double res = dfs(0, 1, 0.0);
      printf("%.10lf\n", res);
    }
  }
}
int main() {
  while (cin >> n >> q) {
    init();
    solve();
  }
}
