A bracket sequence is a string, containing only characters "(", ")", "[" and "]".

A correct bracket sequence is a bracket sequence that can be transformed into a correct arithmetic expression by inserting characters "1" and "+" between the original characters of the sequence. For example, bracket sequences "()[]", "([])" are correct (the resulting expressions are: "(1)+[1]", "([1+1]+1)"), and "](" and "[" are not. The empty string is a correct bracket sequence by definition.

A substring s[l... r] (1 ≤ l ≤ r ≤ |s|) of string s = s1s2... s|s| (where |s| is the length of string s) is the string slsl + 1... sr. The empty string is a substring of any string by definition.

You are given a bracket sequence, not necessarily correct. Find its substring which is a correct bracket sequence and contains as many opening square brackets «[» as possible.

Input

The first and the only line contains the bracket sequence as a string, consisting only of characters "(", ")", "[" and "]". It is guaranteed that the string is non-empty and its length doesn't exceed 105 characters.

Output

In the first line print a single integer — the number of brackets «[» in the required bracket sequence. In the second line print the optimal sequence. If there are more than one optimal solutions print any of them.

Examples

Input

([])


Output

1
([])


Input

(((


Output

0
import java.util.*;

public class Solution
{
       public static void main(String []args)
       {
             Scanner sc = new Scanner(System.in);
             String s = sc.nextLine();
              int n = s.length();
             
            
             int sum[] = new int[n];
             if(s.charAt(0) == '[')
             sum[0] = 1;
             
             else
             sum[0] = 0;
             
            for(int i = 1 ; i < n ; i++)
            {
                   sum[i] = sum[i-1];
                   if(s.charAt(i) == '[')
                   sum[i]++;
            }
            int dp[] = new int[n];
            dp[0] = 0;
            for(int i = 1 ; i < n ; i++)
            {
                   if(s.charAt(i) == ')' || s.charAt(i) == ']')
                   {
                          
                          int idx = i-dp[i-1]-1;
                           
                           //if(idx == -1)
                           //System.out.println(i);
                          if(idx >= 0 && ((s.charAt(i) == ')' && s.charAt(idx) == '(') || (s.charAt(i) == ']' && s.charAt(idx) == '[')))
                          {
                          dp[i] = i-idx+1;
                          if(idx > 0)
                          dp[i] += dp[idx-1];
                          }
                         
                   }
            }
            int tot = 0;
            int pos1 = -1;
            int pos2 = -1;
            for(int i = 0 ; i < n ; i++)
            {
                   if(dp[i] != 0)
                   {
                          int tt = 0;
                          int idx = i-dp[i]+1;
                          if(idx == 0)
                          tt = sum[i];
                          
                          else 
                          tt = sum[i] - sum[idx-1];
                          
                          if(tt >= tot)
                          {
                                 tot = tt;
                                 pos1 = idx;
                                 pos2 = i;
                          }
                   }
            }
            
            if(tot == 0)
            {
                   System.out.println(0);
                   System.out.println();
            }
            
            else
            {
                   System.out.println(tot);
                   s = s+' ';
                   System.out.println(s.substring(pos1,pos2+1));
            }
       }
}
