#include <iostream>
#include <vector>
using namespace std;

int calc(vector<string>&str, vector<int>&level, int n, int max){
  int lev= level[n];
  if(str[n][lev]>='0' && str[n][lev] <= '9'){
    return str[n][lev]-'0';
  }
  if(str[n][lev]=='+'){
    int ans=0;
    for(int i=n+1; i<max; i++){
      if(level[i]<=level[n]) break;
      if(level[i]==level[n]+1){
        ans += calc(str, level, i, max);
      }
    }
    return ans;
  }
  if(str[n][lev]=='*'){
    int ans=1;
    for(int i=n+1; i<max; i++){
      if(level[i]<=level[n]) break;
      if(level[i]==level[n]+1){
        ans *= calc(str, level, i, max);
      }
    }
    return ans;
  }
  return -1;
}

int main(){
  while(1){
    int n;
    cin >> n;
    if(n==0) break;
    
    vector<string> str(n);
    vector<int> l(n,0);
    for(int i=0; i<n; i++){
      cin >> str[i];
      for(int j=0; str[i][j]=='.'; j++){ l[i]++; }
    }
    
    cout << calc(str, l, 0, n) << endl;
  }
  return 0;
}