using System;
using System.Text.RegularExpressions;
/*
http://k...content-available-to-author-only...s.com/2010/12/14/net-regex-mathcing-mixed-balanced-parentheses/
*/
public class Test
{
public static void Main()
{
string pattern = @"
(
[^(){}\[\]]+
| \( (?=[^)]* (?<Stack> \) ) )
| \[ (?=[^\]]* (?<Stack> \] ) )
| \{ (?=[^}]* (?<Stack> \} ) )
| \k<Stack> (?<-Stack>)
)+?
(?(Stack) (?!))
";
string text = Console.ReadLine();
MatchCollection matches = Regex.Matches(text, pattern,
RegexOptions.IgnorePatternWhitespace | RegexOptions.ExplicitCapture);
foreach (Match match in matches)
{
Console.WriteLine(match.Value);
}
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uVGV4dC5SZWd1bGFyRXhwcmVzc2lvbnM7CgovKgpodHRwOi8vay4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4ucy5jb20vMjAxMC8xMi8xNC9uZXQtcmVnZXgtbWF0aGNpbmctbWl4ZWQtYmFsYW5jZWQtcGFyZW50aGVzZXMvCiovCgpwdWJsaWMgY2xhc3MgVGVzdAp7CglwdWJsaWMgc3RhdGljIHZvaWQgTWFpbigpCgl7CgkJc3RyaW5nIHBhdHRlcm4gPSBAIgooCiAgICBbXigpe31cW1xdXSsKICAgIHwgXCggKD89W14pXSogICg/PFN0YWNrPiBcKSApICkKICAgIHwgXFsgKD89W15cXV0qICg/PFN0YWNrPiBcXSApICkKICAgIHwgXHsgKD89W159XSogICg/PFN0YWNrPiBcfSApICkKICAgIHwgXGs8U3RhY2s+ICg/PC1TdGFjaz4pCikrPwooPyhTdGFjaykgKD8hKSkKIjsKCQlzdHJpbmcgdGV4dCA9IENvbnNvbGUuUmVhZExpbmUoKTsKCQlNYXRjaENvbGxlY3Rpb24gbWF0Y2hlcyA9IFJlZ2V4Lk1hdGNoZXModGV4dCwgcGF0dGVybiwKICAgICAgICAgICAgICAgIAlSZWdleE9wdGlvbnMuSWdub3JlUGF0dGVybldoaXRlc3BhY2UgfCBSZWdleE9wdGlvbnMuRXhwbGljaXRDYXB0dXJlKTsKCQlmb3JlYWNoIChNYXRjaCBtYXRjaCBpbiBtYXRjaGVzKQogICAgICAgICAgICAJewogICAgICAgICAgICAgCSAgIENvbnNvbGUuV3JpdGVMaW5lKG1hdGNoLlZhbHVlKTsKCQl9Cgl9Cn0=