#include <bits/stdc++.h>   using namespace std;   template <class T>   bool isPrime(T x) {     if (x <= 1) return false;     T i;     for (i = 2; i * i <= x; i++)       if (x % i == 0) return false;     return true;   }   template <class T>   class Prime {    public:     vector<T> z;     Prime() {       z.resize(1e5 + 7);       for (int i = (0); i < (((int)z.size())); i++) z[i] = 1;       z[0] = 0;       z[1] = 0;       T j;       for (int i = (2); i < (((int)z.size())); i++) {         if (z[i]) {           j = i + i;           while (j < ((int)z.size())) {             z[j] = 0;             j += i;           }         }       }     }   };   template <class T>   double dist(T x1, T y1, T x2, T y2) {     return sqrt(1. * (x2 - x1) * (x2 - x1) + 1. * (y2 - y1) * (y2 - y1));   }   template <class T>   class Point {    public:     T x, y;     Point() {}     Point(T a, T b) : x(a), y(b) {}     bool operator==(const Point& tmp) const { return (x == tmp.x && y == tmp.y); }     Point operator-(const Point& tmp) const {       return Point<T>(x - tmp.x, y - tmp.y);     }   };   char toLowerCase(char x) { return (x + 32); }   char toUpperCase(char x) { return (x - 32); }   bool isUpperCase(char x) { return (65 <= x && x <= 90) ? 1 : 0; }   bool isLowerCase(char x) { return (97 <= x && x <= 122) ? 1 : 0; }   bool isAlpha(char x) { return (isUpperCase(x) || isLowerCase(x)) ? 1 : 0; }   bool isDigit(char x) { return ( 0  <= x && x <=  9 ) ? 1 : 0; }   template <class T>   T toDec(string s) {     stringstream is(s);     T res;     is >> res;     return res;   }   template <class T>   string toStr(T n) {     string s;     stringstream is;     is << n;     is >> s;     return s;   }   template <class T>   void checkmin(T& a, T b) {     if (a > b) a = b;   }   template <class T>   void checkmax(T& a, T b) {     if (a < b) a = b;   }   vector<int> res;   string s;   void parse(int ind) {     string tmp = s.substr(ind + 7);     int p = tmp.find( <table> );     if (p != -1) {       parse(ind + 7 + p);       tmp = s.substr(ind + 7);     }     p = tmp.find( </table> ) + ind + 14;     int i, tot;     i = ind;     tot = 0;     while (i <= p) {       if (i + 3 <= p && s.substr(i, 4) ==  <td> ) tot++;       s[i] =  1 ;       i++;     }     res.push_back(tot);   }   int main() {     int c;     while ((c = getchar()) != EOF) {       if (c !=   n ) s += c;     }     parse(0);     sort(res.begin(), res.end());     for (int i = (0); i < (((int)res.size())); i++) cout << res[i] <<    ;     return 0;   }   