#include #include #include #include #define rep(i, a, b) for (int i = a; i < (b); ++i) #define all(x) begin(x), end(x) #define bw(x) bit_width(unsigned(x)) #define no() { cout << "no\n"; return 0; } using namespace std; int main() { cin.tie(0)->sync_with_stdio(0); int n, m; cin >> n >> m; vector> adj(n); rep(i, 0, m) { int a, b; cin >> a >> b; --a, --b; adj[a].emplace_back(b); adj[b].emplace_back(a); } int d = bw(n) - 1; if (!(n == (1 << d) && ranges::all_of(adj, [d](auto& v) { return v.size() == d; }))) no() rep(i, 0, n) sort(all(adj[i])); auto check_edge = [&](int u, int v) { vector intersection; set_intersection(all(adj[u]), all(adj[v]), back_inserter(intersection)); return intersection.size() == 0; }; rep(u, 0, n) for (auto v : adj[u]) if (!check_edge(u, v)) no() cout << "yes\n"; }