You have a string s of length n consisting of only characters > and <. You may do some operations with this string, for each operation you have to choose some character that still remains in the string. If you choose a character >, the character that comes right after it is deleted (if the character you chose was the last one, nothing happens). If you choose a character <, the character that comes right before it is deleted (if the character you chose was the first one, nothing happens).

For example, if we choose character > in string > > < >, the string will become to > > >. And if we choose character < in string > <, the string will become to <.

The string is good if there is a sequence of operations such that after performing it only one character will remain in the string. For example, the strings >, > > are good. 

Before applying the operations, you may remove any number of characters from the given string (possibly none, possibly up to n - 1, but not the whole string). You need to calculate the minimum number of characters to be deleted from string s so that it becomes good.

Input

The first line contains one integer t (1 ≤ t ≤ 100) – the number of test cases. Each test case is represented by two lines.

The first line of i-th test case contains one integer n (1 ≤ n ≤ 100) – the length of string s.

The second line of i-th test case contains string s, consisting of only characters > and <.

Output

For each test case print one line.

For i-th test case print the minimum number of characters to be deleted from string s so that it becomes good.

Example

Input


3
2
&lt;&gt;
3
&gt;&lt;&lt;
1
&gt;


Output


1
0
0

Note

In the first test case we can delete any character in string <>.

In the second test case we don't need to delete any characters. The string > < < is good, because we can perform the following sequence of operations: > < < → < < → <.
/*
declare
i number:= 2;
j number;
status number:= 1;
total number:= 2;
num number := 3;

begin 
	while i<=10;
	loop
		j:=2;
		while j <= sqrt(num)
		loop
			if mod(num, j) = 0 
			then 
				status:=0;
				EXIT;
			end if;
			j:=j+1;
		end loop;
		if status = 1
		then 
			total:=total+num;
			i=:i+1;
		end if;
		status := 1;
		num:=num+1;
	end loop;
	dbmsoutput.putline(total);
end;






n number;
i number;
temp number;
counter number;
total number;
n:=2;
i:=2;
counter:=0;
temp:=1;

begin
	while counter < 11
	loop
		for i in 2..n/2
		loop
			if mod(n, i) = 0
			then 
				temp:=0;
				exit;
			end if;
		end loop;
		if temp = 1
		then
			counter:=counter+1;
			total:=total+n;
		end if;
		n:=n+1;
	end loop;
	dbms_output.put_line(total); 
end;
		

1,
11,
111,
1111,
11111,
111111,
1111111,
11111111,
111111111,
1111111111,
11111111111,
111111111111,
1111111111111,
11111111111111,
111111111111111,
1111111111111111,
11111111111111111,
111111111111111111,
1111111111111111111
*continous delovery, continous testing, continuous integration.
			
======================================================================
//support for network isolaion, use of snapshots
//testers and developers can share an itrace file to help reproducing and finding issues, allows you to examine the call staxk and local variables.
they are errors not picked up at testing, they are usually found in production.
small sizes, fast iteration.
//degrades application performace
//state preservation
//orchestrator, data protection manager.
//record some actions against the site
//build deploy, build deploy test, build only
analysis
//library
//firewall issues, missing data binding attributes.
//SCVMM tsting lab
//moniters via a "single pane of glass", itegrated with team foudation server
======================================================================
pair programming, delay building anything until required, frequent coummnication, unit testing.
test cases are developed before writing the code to pass them.
code changes to multiple files that are related to the same software change.
too many conflicting ideas
acquiring knowledge around business processes and using it.
proritzed and scheduled with input from the owner.
deliver more features and functionality, higher customer satisfaction, higher application quality, improved developer productivity.
prefers responding to change over following a plan.
processes.
to represent teams with diverse skills working together.
they are templets from which objects are instantiated.

=======================================================================
Graph and pattern workflow.
FTP
branch and merge
the default text editor opens and you enter a commmit message and save
git show master(merge conflicts)
gitignore(status of file)
git diff(review changes).
git branch hotfix(btanch called hotfix).
it's not free.
git branch -d hotfix(to remove a branch called hotfix).
git remote -v (remote with a git command).
*/
//package B;

import java.util.Scanner;

public class B {
    public static void main(String args[]) {
        Scanner sc = new Scanner(System.in);
        int t = sc.nextInt();
        while(t-->0) {
            int n = sc.nextInt();
            String s = sc.next();
            int leftDistance = 0;
            int rightDistance = 0;
            for(int i=0; i<n; i++)
                if(s.charAt(i) != '>') leftDistance++;
                else break;
            for(int i=n-1; i>=0; i--)
                if(s.charAt(i) != '<') rightDistance++;
                else break;
            System.out.println(Math.min(leftDistance, rightDistance));
        }
    }
}



