#include <iostream>
#include <vector>
#include <limits>
#include <queue>
const int INF = std::numeric_limits<int>::max();
// Fungsi untuk implementasi algoritma Dijkstra
void dijkstra(const std::vector<std::vector<int>>& graph, int startNode) {
int numNodes = graph.size();
std::cout << numNodes << "\n";
// Inisialisasi vektor jarak dengan infinity, kecuali startNode
std::vector<int> distance(numNodes, INF);
distance[startNode] = 0;
// Priority Queue untuk menyimpan pasangan (jarak, simpul)
std::priority_queue<std::pair<int, int>, std::vector<std::pair<int, int>>, std::greater<std::pair<int, int>>> pq;
pq.push({0, startNode});
while (!pq.empty()) {
int u = pq.top().second;
std::cout << u << "\n";
pq.pop();
for (int v = 0; v < numNodes; ++v) {
if (graph[u][v] != INF) {
int newDistance = distance[u] + graph[u][v];
if (newDistance < distance[v]) {
distance[v] = newDistance;
pq.push({distance[v], v});
}
}
}
}
// Menampilkan jarak terpendek dari startNode ke semua simpul
std::cout << "Shortest distances from node " << startNode << ":\n";
for (int i = 0; i < numNodes; ++i) {
std::cout << "To node " << i << ": ";
if (distance[i] == INF) {
std::cout << "Infinity\n";
} else {
std::cout << distance[i] << "\n";
}
}
}
/*
node 0: JICA
node 1: Kolam Renang
node 2: Gymnasium
node 3: FPOK B
node 4: FPOK A
node 5: Kantin FIP & FK
node 6: FPMIPA B & C
node 7: FIP
node 8: Perpustakaan
node 9: STI
node 10: SMA UPI & Poliklinik
node 11: Sekolah Pascasarjana & Direktorat
node 12: Gedung Ahmad Sanusi & Parkiran
node 13: FPTK 2
node 14: Gerbang Masuk Gerlong
node 15: FPTK 1
node 16: Masjid Al-Furqon
node 17: Gerbang Utama
node 18: Amphitheatre
node 19: FPSD
node 20: FPIPS
node 21: UC
node 22: FPEB & Balai Bahasa
node 23: Asrama
node 24: Lapangan Tenis
node 25: Museum, Parkiran Atas, dan ATM
node 26: FPBS
node 27: Isola
node 28: Taman
*/
int main() {
// Matriks ketetanggaan
std::vector<std::vector<int>> graph = {
{0, 465, 389, 270, 198, 170, 100, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF},
{465, 0, 300, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF},
{389, 300, 0, 119, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, 208, INF, INF, INF, INF, INF},
{270, INF, 119, 0, 15, INF, INF, INF, 196, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, 162, INF, INF, INF, INF},
{198, INF, INF, 15, 0, 78, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF},
{170, INF, INF, INF, 78, 0, 147, INF, 184, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF},
{100, INF, INF, INF, INF, 147, 0, 94, 179, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF},
{INF, INF, INF, INF, INF, INF, 94, 0, 117, 105, 162, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF},
{INF, INF, INF, 196, INF, 184, 179, 117, 0, 96, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, 97, INF, INF, INF, INF},
{INF, INF, INF, INF, INF, INF, INF, 105, 96, 0, 240, INF, INF, INF, INF, INF, INF, INF, INF, INF, 151, 197, INF, INF, INF, INF, INF, INF, INF},
{INF, INF, INF, INF, INF, INF, INF, 162, INF, 240, 0, 101, INF, INF, INF, INF, INF, INF, INF, 174, 140, INF, INF, INF, INF, INF, INF, INF, INF},
{INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, 101, 0, 80, INF, INF, INF, 143, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF},
{INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, 80, 0, 85, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF},
{INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, 85, 0, 70, INF, 136, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF},
{INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, 70, 0, 141, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF},
{INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, 141, 0, 90, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF},
{INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, 143, INF, 136, INF, 90, 0, 168, 174, 200, INF, INF, INF, INF, INF, INF, INF, INF, INF},
{INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, 168, 0, 221, INF, INF, INF, INF, INF, INF, INF, 320, 285, INF},
{INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, 174, 221, 0, 114, INF, INF, INF, INF, INF, INF, 221, 160, INF},
{INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, 174, INF, INF, INF, INF, INF, 200, INF, 114, 0, 196, INF, INF, INF, INF, INF, 142, INF, INF},
{INF, INF, INF, INF, INF, INF, INF, INF, INF, 151, 140, INF, INF, INF, INF, INF, INF, INF, INF, 196, 0, 46, INF, INF, INF, INF, 66, INF, INF},
{INF, INF, INF, INF, INF, INF, INF, INF, INF, 197, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, 46, 0, 80, INF, INF, 210, INF, INF, INF},
{INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, 80, 0, 191, 190, 210, INF, INF, INF},
{INF, INF, 208, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, 191, 0, 50, INF, INF, INF, INF},
{INF, INF, INF, 162, INF, INF, INF, INF, 97, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, 190, 50, 0, INF, INF, INF, INF},
{INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, 210, 210, INF, INF, 0, 127, INF, 85},
{INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, 320, 221, 142, 66, INF, INF, INF, INF, 127, 0, 65, 85},
{INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, 285, 160, INF, INF, INF, INF, INF, INF, INF, 65, 0, 20},
{INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, INF, 85, 85, 20, 0}
};
// Panggil fungsi Dijkstra dengan simpul awal 0
dijkstra(graph, 0);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8bGltaXRzPgojaW5jbHVkZSA8cXVldWU+Cgpjb25zdCBpbnQgSU5GID0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQ+OjptYXgoKTsKCi8vIEZ1bmdzaSB1bnR1ayBpbXBsZW1lbnRhc2kgYWxnb3JpdG1hIERpamtzdHJhCnZvaWQgZGlqa3N0cmEoY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjp2ZWN0b3I8aW50Pj4mIGdyYXBoLCBpbnQgc3RhcnROb2RlKSB7CiAgICBpbnQgbnVtTm9kZXMgPSBncmFwaC5zaXplKCk7CiAgICBzdGQ6OmNvdXQgPDwgbnVtTm9kZXMgPDwgIlxuIjsKICAgIAogICAgLy8gSW5pc2lhbGlzYXNpIHZla3RvciBqYXJhayBkZW5nYW4gaW5maW5pdHksIGtlY3VhbGkgc3RhcnROb2RlCiAgICBzdGQ6OnZlY3RvcjxpbnQ+IGRpc3RhbmNlKG51bU5vZGVzLCBJTkYpOwogICAgZGlzdGFuY2Vbc3RhcnROb2RlXSA9IDA7CgogICAgLy8gUHJpb3JpdHkgUXVldWUgdW50dWsgbWVueWltcGFuIHBhc2FuZ2FuIChqYXJhaywgc2ltcHVsKQogICAgc3RkOjpwcmlvcml0eV9xdWV1ZTxzdGQ6OnBhaXI8aW50LCBpbnQ+LCBzdGQ6OnZlY3RvcjxzdGQ6OnBhaXI8aW50LCBpbnQ+Piwgc3RkOjpncmVhdGVyPHN0ZDo6cGFpcjxpbnQsIGludD4+PiBwcTsKICAgIHBxLnB1c2goezAsIHN0YXJ0Tm9kZX0pOwoKICAgIHdoaWxlICghcHEuZW1wdHkoKSkgewogICAgICAgIGludCB1ID0gcHEudG9wKCkuc2Vjb25kOwogICAgICAgIHN0ZDo6Y291dCA8PCB1IDw8ICJcbiI7CiAgICAgICAgcHEucG9wKCk7CgogICAgICAgIGZvciAoaW50IHYgPSAwOyB2IDwgbnVtTm9kZXM7ICsrdikgewogICAgICAgICAgICBpZiAoZ3JhcGhbdV1bdl0gIT0gSU5GKSB7CiAgICAgICAgICAgICAgICBpbnQgbmV3RGlzdGFuY2UgPSBkaXN0YW5jZVt1XSArIGdyYXBoW3VdW3ZdOwoKICAgICAgICAgICAgICAgIGlmIChuZXdEaXN0YW5jZSA8IGRpc3RhbmNlW3ZdKSB7CiAgICAgICAgICAgICAgICAgICAgZGlzdGFuY2Vbdl0gPSBuZXdEaXN0YW5jZTsKICAgICAgICAgICAgICAgICAgICBwcS5wdXNoKHtkaXN0YW5jZVt2XSwgdn0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIC8vIE1lbmFtcGlsa2FuIGphcmFrIHRlcnBlbmRlayBkYXJpIHN0YXJ0Tm9kZSBrZSBzZW11YSBzaW1wdWwKICAgIHN0ZDo6Y291dCA8PCAiU2hvcnRlc3QgZGlzdGFuY2VzIGZyb20gbm9kZSAiIDw8IHN0YXJ0Tm9kZSA8PCAiOlxuIjsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtTm9kZXM7ICsraSkgewogICAgICAgIHN0ZDo6Y291dCA8PCAiVG8gbm9kZSAiIDw8IGkgPDwgIjogIjsKICAgICAgICBpZiAoZGlzdGFuY2VbaV0gPT0gSU5GKSB7CiAgICAgICAgICAgIHN0ZDo6Y291dCA8PCAiSW5maW5pdHlcbiI7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgc3RkOjpjb3V0IDw8IGRpc3RhbmNlW2ldIDw8ICJcbiI7CiAgICAgICAgfQogICAgfQp9CgovKgpub2RlIDA6IEpJQ0EKbm9kZSAxOiBLb2xhbSBSZW5hbmcKbm9kZSAyOiBHeW1uYXNpdW0Kbm9kZSAzOiBGUE9LIEIKbm9kZSA0OiBGUE9LIEEKbm9kZSA1OiBLYW50aW4gRklQICYgRksKbm9kZSA2OiBGUE1JUEEgQiAmIEMKbm9kZSA3OiBGSVAKbm9kZSA4OiBQZXJwdXN0YWthYW4Kbm9kZSA5OiBTVEkKbm9kZSAxMDogU01BIFVQSSAmIFBvbGlrbGluaWsKbm9kZSAxMTogU2Vrb2xhaCBQYXNjYXNhcmphbmEgJiBEaXJla3RvcmF0Cm5vZGUgMTI6IEdlZHVuZyBBaG1hZCBTYW51c2kgJiBQYXJraXJhbgpub2RlIDEzOiBGUFRLIDIKbm9kZSAxNDogR2VyYmFuZyBNYXN1ayBHZXJsb25nCm5vZGUgMTU6IEZQVEsgMQpub2RlIDE2OiBNYXNqaWQgQWwtRnVycW9uCm5vZGUgMTc6IEdlcmJhbmcgVXRhbWEKbm9kZSAxODogQW1waGl0aGVhdHJlCm5vZGUgMTk6IEZQU0QKbm9kZSAyMDogRlBJUFMKbm9kZSAyMTogVUMKbm9kZSAyMjogRlBFQiAmIEJhbGFpIEJhaGFzYQpub2RlIDIzOiBBc3JhbWEKbm9kZSAyNDogTGFwYW5nYW4gVGVuaXMKbm9kZSAyNTogTXVzZXVtLCBQYXJraXJhbiBBdGFzLCBkYW4gQVRNCm5vZGUgMjY6IEZQQlMKbm9kZSAyNzogSXNvbGEKbm9kZSAyODogVGFtYW4KKi8KCmludCBtYWluKCkgewogICAgLy8gTWF0cmlrcyBrZXRldGFuZ2dhYW4KICAgIHN0ZDo6dmVjdG9yPHN0ZDo6dmVjdG9yPGludD4+IGdyYXBoID0gewogICAgICAgIHswLCA0NjUsIDM4OSwgMjcwLCAxOTgsIDE3MCwgMTAwLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkZ9LAogICAgICAgIHs0NjUsIDAsIDMwMCwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkZ9LAogICAgICAgIHszODksIDMwMCwgMCwgMTE5LCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIDIwOCwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkZ9LAogICAgICAgIHsyNzAsIElORiwgMTE5LCAwLCAxNSwgSU5GLCBJTkYsIElORiwgMTk2LCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCAxNjIsIElORiwgSU5GLCBJTkYsIElORn0sCiAgICAgICAgezE5OCwgSU5GLCBJTkYsIDE1LCAwLCA3OCwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkZ9LAogICAgICAgIHsxNzAsIElORiwgSU5GLCBJTkYsIDc4LCAwLCAxNDcsIElORiwgMTg0LCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORn0sCiAgICAgICAgezEwMCwgSU5GLCBJTkYsIElORiwgSU5GLCAxNDcsIDAsIDk0LCAxNzksIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GfSwKICAgICAgICB7SU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgOTQsIDAsIDExNywgMTA1LCAxNjIsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkZ9LAogICAgICAgIHtJTkYsIElORiwgSU5GLCAxOTYsIElORiwgMTg0LCAxNzksIDExNywgMCwgOTYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCA5NywgSU5GLCBJTkYsIElORiwgSU5GfSwKICAgICAgICB7SU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCAxMDUsIDk2LCAwLCAyNDAsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIDE1MSwgMTk3LCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkZ9LAogICAgICAgIHtJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIDE2MiwgSU5GLCAyNDAsIDAsIDEwMSwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCAxNzQsIDE0MCwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkZ9LAogICAgICAgIHtJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIDEwMSwgMCwgODAsIElORiwgSU5GLCBJTkYsIDE0MywgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORn0sCiAgICAgICAge0lORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCA4MCwgMCwgODUsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkZ9LAogICAgICAgIHtJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCA4NSwgMCwgNzAsIElORiwgMTM2LCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GfSwKICAgICAgICB7SU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCA3MCwgMCwgMTQxLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkZ9LAogICAgICAgIHtJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgMTQxLCAwLCA5MCwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORn0sCiAgICAgICAge0lORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCAxNDMsIElORiwgMTM2LCBJTkYsIDkwLCAwLCAxNjgsIDE3NCwgMjAwLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GfSwKICAgICAgICB7SU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCAxNjgsIDAsIDIyMSwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCAzMjAsIDI4NSwgSU5GfSwKICAgICAgICB7SU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCAxNzQsIDIyMSwgMCwgMTE0LCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCAyMjEsIDE2MCwgSU5GfSwKICAgICAgICB7SU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCAxNzQsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCAyMDAsIElORiwgMTE0LCAwLCAxOTYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCAxNDIsIElORiwgSU5GfSwKICAgICAgICB7SU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgMTUxLCAxNDAsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCAxOTYsIDAsIDQ2LCBJTkYsIElORiwgSU5GLCBJTkYsIDY2LCBJTkYsIElORn0sCiAgICAgICAge0lORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIDE5NywgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCA0NiwgMCwgODAsIElORiwgSU5GLCAyMTAsIElORiwgSU5GLCBJTkZ9LAogICAgICAgIHtJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCA4MCwgMCwgMTkxLCAxOTAsIDIxMCwgSU5GLCBJTkYsIElORn0sCiAgICAgICAge0lORiwgSU5GLCAyMDgsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgMTkxLCAwLCA1MCwgSU5GLCBJTkYsIElORiwgSU5GfSwKICAgICAgICB7SU5GLCBJTkYsIElORiwgMTYyLCBJTkYsIElORiwgSU5GLCBJTkYsIDk3LCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIDE5MCwgNTAsIDAsIElORiwgSU5GLCBJTkYsIElORn0sCiAgICAgICAge0lORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIDIxMCwgMjEwLCBJTkYsIElORiwgMCwgMTI3LCBJTkYsIDg1fSwKICAgICAgICB7SU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIDMyMCwgMjIxLCAxNDIsIDY2LCBJTkYsIElORiwgSU5GLCBJTkYsIDEyNywgMCwgNjUsIDg1fSwKICAgICAgICB7SU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIDI4NSwgMTYwLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIDY1LCAwLCAyMH0sCiAgICAgICAge0lORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgSU5GLCBJTkYsIElORiwgODUsIDg1LCAyMCwgMH0KICAgIH07CgogICAgLy8gUGFuZ2dpbCBmdW5nc2kgRGlqa3N0cmEgZGVuZ2FuIHNpbXB1bCBhd2FsIDAKICAgIGRpamtzdHJhKGdyYXBoLCAwKTsKCiAgICByZXR1cm4gMDsKfQo=