#include<iostream>
#include<queue>
using namespace std;
int n, arr[100][100], par[100], vis[100], ans[100];
void bfs(int start, int end){
queue<int> Q;
Q.push(start);
par[start] = -1;vis[start] = 1;
bool found = false;
while(Q.size() > 0){
int v = Q.front();
Q.pop();
if(v == end){
found = true;
break;
}
for(int i = 1;i <= n;i++){
if(arr[v][i] == 0 || vis[i] == 1) continue;
Q.push(i);vis[i] = 1;
par[i] = v;
}
}
if(found == false){
cout << "No Path Found" << endl;return;
}
int curr = end, len = 0;
while(curr != -1){
ans[len++] = curr;
curr = par[curr];
}
for(int i = len-1;i >= 1;i--) cout << ans[i] << " " << ans[i-1] << endl;
}
int main(){
n = 5;
arr[1][2] = 1;arr[2][1] = 1;
arr[2][4] = 1;arr[4][2] = 1;
arr[4][5] = 1;arr[5][4] = 1;
arr[3][4] = 1;arr[4][3] = 1;
bfs(1, 3);
return 0;
}
I2luY2x1ZGU8aW9zdHJlYW0+CiNpbmNsdWRlPHF1ZXVlPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmludCBuLCBhcnJbMTAwXVsxMDBdLCBwYXJbMTAwXSwgdmlzWzEwMF0sIGFuc1sxMDBdOwoKdm9pZCBiZnMoaW50IHN0YXJ0LCBpbnQgZW5kKXsKCXF1ZXVlPGludD4gUTsKCVEucHVzaChzdGFydCk7CglwYXJbc3RhcnRdID0gLTE7dmlzW3N0YXJ0XSA9IDE7Cglib29sIGZvdW5kID0gZmFsc2U7Cgl3aGlsZShRLnNpemUoKSA+IDApewoJCWludCB2ID0gUS5mcm9udCgpOwoJCVEucG9wKCk7CgkJaWYodiA9PSBlbmQpewoJCQlmb3VuZCA9IHRydWU7CgkJCWJyZWFrOwoJCX0KCQlmb3IoaW50IGkgPSAxO2kgPD0gbjtpKyspewoJCQlpZihhcnJbdl1baV0gPT0gMCB8fCB2aXNbaV0gPT0gMSkgY29udGludWU7CgkJCVEucHVzaChpKTt2aXNbaV0gPSAxOwoJCQlwYXJbaV0gPSB2OwoJCX0KCX0KCWlmKGZvdW5kID09IGZhbHNlKXsKCQljb3V0IDw8ICJObyBQYXRoIEZvdW5kIiA8PCBlbmRsO3JldHVybjsKCX0KCWludCBjdXJyID0gZW5kLCBsZW4gPSAwOwoJd2hpbGUoY3VyciAhPSAtMSl7CgkJYW5zW2xlbisrXSA9IGN1cnI7CgkJY3VyciA9IHBhcltjdXJyXTsKCX0KCWZvcihpbnQgaSA9IGxlbi0xO2kgPj0gMTtpLS0pIGNvdXQgPDwgYW5zW2ldIDw8ICIgIiA8PCBhbnNbaS0xXSA8PCBlbmRsOwp9CgppbnQgbWFpbigpewoJbiA9IDU7CglhcnJbMV1bMl0gPSAxO2FyclsyXVsxXSA9IDE7CglhcnJbMl1bNF0gPSAxO2Fycls0XVsyXSA9IDE7CglhcnJbNF1bNV0gPSAxO2Fycls1XVs0XSA9IDE7CglhcnJbM11bNF0gPSAxO2Fycls0XVszXSA9IDE7CgoJYmZzKDEsIDMpOwoJCglyZXR1cm4gMDsKfQ==