1005
char str[1000000000] ;
int main(){
int n , i , j , no ;
string s ;
LL sum , a , t ;
char ch ;
while(scanf("%d" , &n) != EOF){
getchar() ;
no = 0 ;
s = "" ;
sum = 1 ;
for(i = 1 ; i <= n ; i++){
gets(str) ;
s += string(str) ;
}
for(i = 0 ; i < s.length() ; i++){
if(s[i] == '{'){
t = 0 ;
for(j = i + 1 ; s[j] != '}' ; j++){
if(s[j] == '|') t++ ;
}
if(t > 100000LL){
no = 1 ; break ;
}
sum *= (t + 1) ;
if(sum > 100000LL){
no = 1 ;
break ;
}
i = j ;
}
else if(s[i] == '$'){
t = 1 ;
LL c = 0LL ;
for(j = i + 1 ; s[j] != '$' ; j++){
if(s[j] == ' '){
c++ ;
if(c > 100000LL){
no = 1 ; break ;
}
}
else{
if(c != 0){
t *= (c + 1) ;
if(t > 100000LL){
no = 1 ; break ;
}
c = 0LL ;
}
}
}
if(c != 0){
t *= (c + 1) ;
c = 0LL ;
}
if(t > 100000LL){
no = 1 ; break ;
}
sum *= t ;
if(sum > 100000LL){
no = 1 ;
break ;
}
i = j ;
}
}
if(sum > 100000LL) no = 1 ;
if(no == 1) puts("doge") ;
else cout << sum << endl ;
}
return 0 ;
}
1007
typedef long long LL ;
set<LL> st ;
set<LL> ::iterator it ;
LL a[100] ;
void Fibonacci(){
a[0] = a[1] = 1;
for (int i = 2 ; i <= 80 ; i++) {
a[i] = a[i-1] + a[i-2];
}
for(int i = 0 ; i <= 80 ; i++) st.insert(a[i]) ;
}
const int maxn = 100008 ;
int color[maxn<<2] ;
LL sum[maxn<<2] , x[maxn] ;
void make(int l , int r , int t){
color[t] = -1 ;
sum[t] = 0LL ;
if(l == r){
x[l] = 0LL ;
return ;
}
int m = (l + r) >> 1 ;
make(l , m , t<<1) ;
make(m+1 , r , t<<1|1) ;
}
void update(int i , LL c , int l , int r , int t){
if(l == r){
x[l] += c ;
sum[t] += c ;
if(st.find(x[l]) != st.end()) color[t] = 1 ;
else color[t] = -1 ;
return ;
}
int m = (l + r) >> 1 ;
if(i <= m) update(i , c , l , m , t<<1) ;
else update(i , c , m+1 , r , t<<1|1) ;
if(color[t<<1] == 1 && color[t<<1|1] == 1) color[t] = 1 ;
else color[t] = -1 ;
sum[t] = sum[t<<1] + sum[t<<1|1] ;
}
LL ask(int l , int r , int L , int R , int t){
if(l <= L && R <= r) return sum[t] ;
LL s = 0LL ;
int m = (L + R) >> 1 ;
if(l <= m) s += ask(l , r , L , m , t<<1) ;
if(r > m) s += ask(l , r , m+1 , R , t<<1|1) ;
return s ;
}
void change(int l , int r , int L , int R , int t){
if(color[t] == 1) return ;
if(L == R){
if(x[L] < 1){
x[L] = 1 ;
sum[t] = 1 ;
color[t] = 1 ;
return ;
}
int i ;
for(i = 0 ; i <= 80 ; i++){
if(a[i] > x[L]) break ;
}
color[t] = 1 ;
if(x[L] - a[i-1] <= a[i] - x[L]) x[L] = a[i-1] ;
else x[L] = a[i] ;
sum[t] = x[L] ;
return ;
}
int m = (L + R) >> 1 ;
if(l <= m) change(l , r , L , m , t<<1) ;
if(r > m) change(l , r , m+1 , R , t<<1|1) ;
if(color[t<<1]== 1 && color[t<<1|1] == 1) color[t] = 1 ;
else color[t] = -1 ;
sum[t] = sum[t<<1] + sum[t<<1|1] ;
}
int main(){
Fibonacci() ;
int n , m , k , a , b ;
while(cin>>n>>m){
make(1 , n , 1) ;
while(m--){
scanf("%d%d%d" , &k ,&a ,&b) ;
if(k == 1)
update(a , (LL)b , 1 , n , 1) ;
else if(k == 2){
if(a > b) swap(a , b) ;
printf("%I64d\n" , ask(a , b , 1 , n , 1)) ;
}
else{
if(a > b) swap(a , b) ;
change(a , b , 1 , n , 1) ;
}
}
}
return 0 ;
}