CCCPaste

f7956e3eb5147

#include <bits/stdc++.h>
using namespace std;


using ll = long long;
using ull = unsigned long long;
using ld = long double;
using vll = vector<ll>;
using pll = pair<ll, ll>;
using mll = map<ll,ll>;
using sll = set<ll>;
#define iv(v) for(auto &i:v) cin >> i
#define ov(v) for(auto &i:v) cout << i << " "
#define all(v) v.begin(), v.end()
#define rall(v) v.rbegin(), v.rend()
#define YES cout << "YES\n"
#define NO cout << "NO\n"

#define Bismillah ios_base::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr);

const ll MOD = 1e9 + 7;

ll add(ll a, ll b) {return ((a % MOD) + (b % MOD)) % MOD;}
ll mul(ll a, ll b) {return ((a % MOD) * (b % MOD)) % MOD;}
ll sub(ll a, ll b) {return (((a - b) % MOD) + MOD) % MOD;}
ll modExp(ll a, ll b) {
if (b <= 0) return 1;
ll ret = modExp(a * a % MOD, b / 2);
if (b % 2) ret = ret * a % MOD;
return ret;
}
ll inverse(ll b) {return modExp(b, MOD - 2);}
ll divv(ll a, ll b) {return ((a % MOD) * (inverse(b) % MOD)) % MOD;}

/////////////////////////////////////////////////////////////////////////////////////////////////////////////


ll n;
vector<vll>adj(n);

void dfs(ll v, ll p) {

}
void solve() {
int m;
cin >> n >> m;
mll f;
for (int i=0; i<m; i++) {
ll u,v; cin >> u >> v; u--; v--;
// adj[u].push_back(v);
// adj[v].push_back(u);
f[u]++; f[v]++;
}
if (n==m) {
for (int i=0; i<n; i++) {
if (f[i]!=2) goto a;
}
cout << "ring topology" << endl; return;
}
a:
if (n==m+1) {
ll g=1;
for (int i=0;i<n; i++) {
if (f[i]!=1) {
if (g&&f[i]==m) g--;
else goto b;
}
}
cout << "star topology" << endl; return;
b:
g=2;
for (int i=0;i<n; i++) {
if (f[i]!=2) {
if (g&&f[i]==1) g--;
else goto b;
}
}
cout << "bus topology" << endl; return;

}
cout << "unknown topology" << endl;
}

int main() {
Bismillah
ll t=1;
// cin >> t;
while (t--) {
solve();
}
return 0;
}