/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
import java.util.regex.Pattern;
import java.util.regex.Matcher;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
{
String regex
= "\\(\\[(Modulus\\(\\d+\\)(?:\\s*,\\s*Modulus\\(\\d+\\))*)\\]\\):(\\(\\d+(?:,\\d+)*\\)x\\^\\d+(?:\\s*\\+\\s*\\(\\d+(?:,\\d+)*\\)x\\^\\d+)*)"; String string
= "RNS Polynomial ([Modulus(68719403009), Modulus(68719230977), Modulus(137438822401)]):(67699591241,42814670386,92925202514)x^0 + (42539574637,55054036653,135659663247)x^1 + (52858091297,11618896202,6855552742)x^2 + (45970532823,20845087073,91272562929)x^3 + (11148839321,55275439733,5401722690)x^4 + (31959765643,40620395732,93052536121)x^5 + (57030732406,66026147059,6304524013)x^6 + (27778918692,11276356856,61606736382)x^7\n";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(string);
while (matcher.find()) {
if (matcher.group(1) != null) {
for (String elm1
: matcher.
group(1).
split(",\\s*")) }
if (matcher.group(2) != null) {
for (String elm2
: matcher.
group(2).
split("\\s*\\+\\s*")) }
}
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CmltcG9ydCBqYXZhLnV0aWwucmVnZXguUGF0dGVybjsKaW1wb3J0IGphdmEudXRpbC5yZWdleC5NYXRjaGVyOwoKLyogTmFtZSBvZiB0aGUgY2xhc3MgaGFzIHRvIGJlICJNYWluIiBvbmx5IGlmIHRoZSBjbGFzcyBpcyBwdWJsaWMuICovCmNsYXNzIElkZW9uZQp7CglwdWJsaWMgc3RhdGljIHZvaWQgbWFpbiAoU3RyaW5nW10gYXJncykgdGhyb3dzIGphdmEubGFuZy5FeGNlcHRpb24KCXsKCQkgICAgICAgIFN0cmluZyByZWdleCA9ICJcXChcXFsoTW9kdWx1c1xcKFxcZCtcXCkoPzpcXHMqLFxccypNb2R1bHVzXFwoXFxkK1xcKSkqKVxcXVxcKTooXFwoXFxkKyg/OixcXGQrKSpcXCl4XFxeXFxkKyg/OlxccypcXCtcXHMqXFwoXFxkKyg/OixcXGQrKSpcXCl4XFxeXFxkKykqKSI7CiAgICAgICAgU3RyaW5nIHN0cmluZyA9ICJSTlMgUG9seW5vbWlhbCAoW01vZHVsdXMoNjg3MTk0MDMwMDkpLCBNb2R1bHVzKDY4NzE5MjMwOTc3KSwgTW9kdWx1cygxMzc0Mzg4MjI0MDEpXSk6KDY3Njk5NTkxMjQxLDQyODE0NjcwMzg2LDkyOTI1MjAyNTE0KXheMCArICg0MjUzOTU3NDYzNyw1NTA1NDAzNjY1MywxMzU2NTk2NjMyNDcpeF4xICsgKDUyODU4MDkxMjk3LDExNjE4ODk2MjAyLDY4NTU1NTI3NDIpeF4yICsgKDQ1OTcwNTMyODIzLDIwODQ1MDg3MDczLDkxMjcyNTYyOTI5KXheMyArICgxMTE0ODgzOTMyMSw1NTI3NTQzOTczMyw1NDAxNzIyNjkwKXheNCArICgzMTk1OTc2NTY0Myw0MDYyMDM5NTczMiw5MzA1MjUzNjEyMSl4XjUgKyAoNTcwMzA3MzI0MDYsNjYwMjYxNDcwNTksNjMwNDUyNDAxMyl4XjYgKyAoMjc3Nzg5MTg2OTIsMTEyNzYzNTY4NTYsNjE2MDY3MzYzODIpeF43XG4iOwoKICAgICAgICBQYXR0ZXJuIHBhdHRlcm4gPSBQYXR0ZXJuLmNvbXBpbGUocmVnZXgpOwogICAgICAgIE1hdGNoZXIgbWF0Y2hlciA9IHBhdHRlcm4ubWF0Y2hlcihzdHJpbmcpOwoKICAgICAgICB3aGlsZSAobWF0Y2hlci5maW5kKCkpIHsKICAgICAgICAgICAgaWYgKG1hdGNoZXIuZ3JvdXAoMSkgIT0gbnVsbCkgewogICAgICAgICAgICAgICAgZm9yIChTdHJpbmcgZWxtMSA6IG1hdGNoZXIuZ3JvdXAoMSkuc3BsaXQoIixcXHMqIikpCiAgICAgICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKGVsbTEpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChtYXRjaGVyLmdyb3VwKDIpICE9IG51bGwpIHsKICAgICAgICAgICAgICAgIGZvciAoU3RyaW5nIGVsbTIgOiBtYXRjaGVyLmdyb3VwKDIpLnNwbGl0KCJcXHMqXFwrXFxzKiIpKQogICAgICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihlbG0yKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCX0KfQ==
Modulus(68719403009)
Modulus(68719230977)
Modulus(137438822401)
(67699591241,42814670386,92925202514)x^0
(42539574637,55054036653,135659663247)x^1
(52858091297,11618896202,6855552742)x^2
(45970532823,20845087073,91272562929)x^3
(11148839321,55275439733,5401722690)x^4
(31959765643,40620395732,93052536121)x^5
(57030732406,66026147059,6304524013)x^6
(27778918692,11276356856,61606736382)x^7