Shipura

아직 제출이 없습니다시간 제한8초메모리 제한512 MB

문제

수포수포 박사가 Shipura라는 프로그래밍 언어를 만들었다. Shipura에는 이항 연산자 >> 하나와 단항 함수 S< > 하나만 있다.

xx >> yyx/2y\lfloor x / 2^y \rfloor, 즉 x/2yx / 2^y를 넘지 않는 가장 큰 정수로 계산한다. S< xx >x2mod1,000,000,007x^2 \bmod 1{,}000{,}000{,}007, 즉 x2x^21,000,000,0071{,}000{,}000{,}007로 나눈 나머지로 계산한다.

>> 연산자는 왼쪽 결합이다. 예를 들어 xx >> yy >> zz(x(x >> y)y) >> zz로 해석하고, xx >> (y(y >> z)z)로 해석하지 않는다. 실제 Shipura 식에 이 괄호는 나오지 않는다.

Shipura의 문법을 BNF로 쓰면 다음과 같다.

expr   ::= term | expr sp ">>" sp term
term   ::= number | "S" sp "<" sp expr sp ">"
sp     ::= "" | sp " "
number ::= digit | number digit
digit  ::= "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9"

시작 기호는 Shipura 식을 나타내는 expr이다. number는 00 이상 1,000,000,0001{,}000{,}000{,}000 이하의 정수이고, 앞에 불필요한 0을 붙이지 않는다.

Shipura 식을 계산하는 프로그램을 작성하시오.

입력

입력은 여러 개의 데이터 집합으로 이루어진다. 각 데이터 집합은 한 줄이며, 그 줄에 올바른 Shipura 식이 하나 들어 있다.

# 하나만 있는 줄이 나오면 입력이 끝난다. 데이터 집합은 100개 이하이고, 입력 파일 전체 크기는 2,000,000바이트를 넘지 않는다.

출력

각 데이터 집합마다 식을 계산한 값을 한 줄에 출력한다.