#include <iostream>
#include <map>
#include <string>
#include <vector>
using namespace std;
int main() {
std::string dna("ACTGCGACGGTACGCTTCGACGTAG");
std::map< std::string, std::vector<int> > msvi;
auto len = dna.size();
for(auto i = 0; i + 3 <= len; ++i) {
for(auto j = 3; i + j < len; ++j) {
msvi[ dna.substr(i, j) ].push_back(i);
}
}
for(auto &it : msvi) {
if(it.second.size() < 2) continue;
cout << it.first << ':';
for(auto &n : it.second) cout << n << ' ';
cout << endl;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bWFwPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8dmVjdG9yPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IG1haW4oKSB7CglzdGQ6OnN0cmluZyBkbmEoIkFDVEdDR0FDR0dUQUNHQ1RUQ0dBQ0dUQUciKTsKCXN0ZDo6bWFwPCBzdGQ6OnN0cmluZywgc3RkOjp2ZWN0b3I8aW50PiA+IG1zdmk7CglhdXRvIGxlbiA9IGRuYS5zaXplKCk7Cglmb3IoYXV0byBpID0gMDsgaSArIDMgPD0gbGVuOyArK2kpIHsKCSAgZm9yKGF1dG8gaiA9IDM7IGkgKyBqIDwgbGVuOyArK2opIHsKCSAgICBtc3ZpWyBkbmEuc3Vic3RyKGksIGopIF0ucHVzaF9iYWNrKGkpOwoJICB9Cgl9CgogICAgZm9yKGF1dG8gJml0IDogbXN2aSkgewogICAgCWlmKGl0LnNlY29uZC5zaXplKCkgPCAyKSBjb250aW51ZTsKICAgIAljb3V0IDw8IGl0LmZpcnN0IDw8ICc6JzsKICAgIAlmb3IoYXV0byAmbiA6IGl0LnNlY29uZCkgY291dCA8PCBuIDw8ICcgJzsKICAgIAljb3V0IDw8IGVuZGw7CiAgICB9CglyZXR1cm4gMDsKfQ==