Let N be a positive integer. You are given a string s of length N - 1, consisting of `<` and `>`.

Find the number of permutations (p_1, p_2, \ldots, p_N) of (1, 2, \ldots, N) that satisfy the following condition, modulo 10^9 + 7:

* For each i (1 \leq i \leq N - 1), p_i < p_{i + 1} if the i-th character in s is `<`, and p_i > p_{i + 1} if the i-th character in s is `>`.

Constraints

* N is an integer.
* 2 \leq N \leq 3000
* s is a string of length N - 1.
* s consists of `<` and `>`.

Input

Input is given from Standard Input in the following format:


N
s


Output

Print the number of permutations that satisfy the condition, modulo 10^9 + 7.

Examples

Input

4
<><


Output

5


Input

5
<<<<


Output

1


Input

20
>>>><>>><>><>>><<>>


Output

217136290


def read_int():
    return int(input().strip())


def read_ints():
    return list(map(int, input().strip().split(' ')))


def solve():
    """
    OPT[i][j] - number of solutions for s[:i] and ends in j uses only 1..i

    OPT[i+1][j] = sum(OPT[i][k]) k > j               if s[i+1] = '>'
    OPT[i+1][j] = sum(OPT[i][k]) k < j
    """
    N = read_int()
    s = input().strip()
    dp = [0]*N
    dp[0] = 1
    new_dp = [0]*N
    modulo = 10**9+7
    for i in range(1, N):
        T = 0
        if s[i-1] == '<':
            for j in range(1, i+1):
                T = (T+dp[j-1])%modulo
                dp[j-1] = 0
                new_dp[j] = T
        else: #s[i-1] == '>'
            for j in range(i, -1, -1):
                T = (T+dp[j])%modulo
                dp[j] = 0
                new_dp[j] = T
        dp, new_dp = new_dp, dp
    return sum(dp)%modulo


if __name__ == '__main__':
    print(solve())
