#include <bits/stdc++.h>
using namespace std;
bool dig(char c) {
  if (c >= '0' and c <= '9') return 1;
  return 0;
}
void o() {
  cout << 0;
  exit(0);
}
string s;
int dp[2005][2005];
int M = 1e6 + 3;
int st[2005], x[2005], y[2005];
int a[2005];
int main() {
  char c[2005];
  gets(c);
  s = c;
  int t = 0;
  int m = 0;
  for (int i = 1; i < s.size(); i++) {
    if (s[i] == '*' or s[i] == '/')
      if (dig(s[i - 1]) == 0) o();
  }
  if (dig(s[s.size() - 1]) == 0) o();
  if (s[0] == '*' or s[0] == '/') o();
  for (int i = 0; i < s.size(); i++) {
    if (!dig(s[i])) {
      t++;
    } else if (t > 0 or i == 0) {
      a[m++] = t - 1;
      t = 0;
    }
  }
  int n = 0;
  a[0]++;
  for (int i = 0; i < m; i++) {
    st[i] = n;
    for (int j = a[i]; j >= 0; j--) {
      x[n] = i;
      y[n] = j;
      n++;
    }
  }
  for (int i = n - 1; i >= 0; i--) {
    dp[i][x[i]] = 1;
    for (int j = x[i] + 1; j < m; j++) {
      if (y[i] != 0) dp[i][j] += dp[i + 1][j];
      long long g = 0;
      for (int k = x[i]; k < j; k++) {
        g += (long long)dp[i][k] * (long long)dp[st[k + 1]][j];
      }
      dp[i][j] += g % M;
      dp[i][j] %= M;
    }
  }
  cout << dp[0][m - 1];
  return 0;
}
