Example

Input

R?????,2?)


Output

29
#include <bits/stdc++.h>

#define _overload(_1,_2,_3,name,...) name
#define _rep(i,n) _range(i,0,n)
#define _range(i,a,b) for(int i=int(a);i<int(b);++i)
#define rep(...) _overload(__VA_ARGS__,_range,_rep,)(__VA_ARGS__)

#define _rrep(i,n) _rrange(i,n,0)
#define _rrange(i,a,b) for(int i=int(a)-1;i>=int(b);--i)
#define rrep(...) _overload(__VA_ARGS__,_rrange,_rrep,)(__VA_ARGS__)

#define _all(arg) begin(arg),end(arg)
#define uniq(arg) sort(_all(arg)),(arg).erase(unique(_all(arg)),end(arg))
#define getidx(ary,key) lower_bound(_all(ary),key)-begin(ary)
#define clr(a,b) memset((a),(b),sizeof(a))
#define bit(n) (1LL<<(n))
#define popcount(n) (__builtin_popcountll(n))

template<class T>bool chmax(T &a, const T &b) { return (a<b)?(a=b,1):0;}
template<class T>bool chmin(T &a, const T &b) { return (b<a)?(a=b,1):0;}

using namespace std;

const int dx[8]={1,0,-1,0,1,-1,-1,1};
const int dy[8]={0,1,0,-1,1,1,-1,-1};

string s;
string dp[55][55];

inline string update(string a,string b){
	if(a=="invalid") return b;
	if(b=="invalid") return a;
	if(a.size()>b.size()) return a;
	if(b.size()>a.size()) return b;
	return max(a,b);	
}

string rec(int l,int r){
	string &ret=dp[l][r];
	if(ret!="") return ret;

	ret="invalid";
	if(l>=r) return ret;	
	// Number
	{
		string cur=s.substr(l,r-l);
		int m=cur.size();
		//cout << l << " " << r << endl;
		//cout << cur << " " << m << endl;
		bool ok=true;
		rep(i,m){
			if(cur[i]=='?') cur[i]='9';
			if(isdigit(cur[i])==false) ok=false;
		}
		if(cur[0]=='0' && m>=2) ok=false;
		//cout << cur << endl;
		if(ok) return ret=cur;
	}

	// L
	{
		bool ok=true;
		if(s[l]!='L' && s[l]!='?') ok=false;
		if(s[l+1]!='(' && s[l+1]!='?') ok=false;
		if(s[r-1]!=')' && s[r-1]!='?') ok=false;

		if(ok){
			for(int i=l+3;i<r-1;++i){
				if(s[i]!=',' && s[i]!='?') continue;
				string left=rec(l+2,i),right=rec(i+1,r-1);
				if(left=="invalid"||right=="invalid") continue;
				ret=update(ret,left);
			}
		}
	}

	{
		bool ok=true;
		if(s[l]!='R' && s[l]!='?') ok=false;
		if(s[l+1]!='(' && s[l+1]!='?') ok=false;
		if(s[r-1]!=')' && s[r-1]!='?') ok=false;

		if(ok){
			for(int i=l+3;i<r-1;++i){
				if(s[i]!=',' && s[i]!='?') continue;
				string left=rec(l+2,i),right=rec(i+1,r-1);
				if(left=="invalid"||right=="invalid") continue;
				ret=update(ret,right);
			}
		}
	}

	return ret;
}


int main(void){
	cin >> s;
	int n=s.size();
	cout << rec(0,n) << endl;
	return 0;
}