import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
class Ideone
{
private static List<Integer> indices = new ArrayList<Integer>();
private static List<String> result = new ArrayList<String>();
{
String str
= "a:b?:c??:d???:e????:f";
Pattern pattern = Pattern.compile("(?<!\\?)(?:\\?{2})*:");
Matcher matcher = pattern.matcher(str);
while(matcher.find()) {
result.add(str.substring(getLastIndex(), matcher.end() - 1));
indices.add(matcher.end());
}
result.add(str.substring(getLastIndex()));
}
private static int getLastIndex() {
if(indices.isEmpty()) {
return 0;
} else {
return indices.get(indices.size() - 1);
}
}
}
aW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS51dGlsLnJlZ2V4Lk1hdGNoZXI7CmltcG9ydCBqYXZhLnV0aWwucmVnZXguUGF0dGVybjsKCmNsYXNzIElkZW9uZQp7CgkKCXByaXZhdGUgc3RhdGljIExpc3Q8SW50ZWdlcj4gaW5kaWNlcyA9IG5ldyBBcnJheUxpc3Q8SW50ZWdlcj4oKTsKCXByaXZhdGUgc3RhdGljIExpc3Q8U3RyaW5nPiByZXN1bHQgPSBuZXcgQXJyYXlMaXN0PFN0cmluZz4oKTsKCQoJcHVibGljIHN0YXRpYyB2b2lkIG1haW4gKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBqYXZhLmxhbmcuRXhjZXB0aW9uCgl7CgkJCgkJU3RyaW5nIHN0ciA9ICJhOmI/OmM/PzpkPz8/OmU/Pz8/OmYiOwoJCQoJCVBhdHRlcm4gcGF0dGVybiA9IFBhdHRlcm4uY29tcGlsZSgiKD88IVxcPykoPzpcXD97Mn0pKjoiKTsKCQlNYXRjaGVyIG1hdGNoZXIgPSBwYXR0ZXJuLm1hdGNoZXIoc3RyKTsKCQkKCQl3aGlsZShtYXRjaGVyLmZpbmQoKSkgewoJCQlyZXN1bHQuYWRkKHN0ci5zdWJzdHJpbmcoZ2V0TGFzdEluZGV4KCksIG1hdGNoZXIuZW5kKCkgLSAxKSk7CgkJCWluZGljZXMuYWRkKG1hdGNoZXIuZW5kKCkpOwoJCX0KCQlyZXN1bHQuYWRkKHN0ci5zdWJzdHJpbmcoZ2V0TGFzdEluZGV4KCkpKTsKCQlTeXN0ZW0ub3V0LnByaW50KHJlc3VsdCk7Cgl9CgkKCXByaXZhdGUgc3RhdGljIGludCBnZXRMYXN0SW5kZXgoKSB7CgkJaWYoaW5kaWNlcy5pc0VtcHR5KCkpIHsKCQkJcmV0dXJuIDA7CgkJfSBlbHNlIHsKCQkJcmV0dXJuIGluZGljZXMuZ2V0KGluZGljZXMuc2l6ZSgpIC0gMSk7CgkJfQoJfQp9