#include <bits/stdc++.h>
using namespace std;
map<int, int> mp;
int h, q, v, e;
char s[10];
int max(int a, int b) { return a > b ? a : b; }
double orzyww(int x, int dep, int mx) {
  int xe, xl, xr;
  xe = mp[x];
  if (xe <= mx) return mx;
  if (dep == h) return xe;
  xl = xe - mp[x << 1 | 1];
  xr = xe - mp[x << 1];
  if (xl < xr)
    return orzyww(x << 1 | 1, dep + 1, max(xl, mx)) * .5 + max(xr, mx) * .5;
  else
    return orzyww(x << 1, dep + 1, max(xr, mx)) * .5 + max(xl, mx) * .5;
}
int main() {
  scanf("%d%d", &h, &q);
  while (q--) {
    scanf("%s", s);
    if (s[0] == 'a') {
      scanf("%d%d", &v, &e);
      while (v) {
        mp[v] += e;
        v >>= 1;
      }
    } else
      printf("%.8lf\n", orzyww(1, 0, 0));
  }
}
