#include<bits/stdc++.h>
#include<iostream>
#include<vector>
#include<algorithm>
#include<cmath>
#include<set>
#include<queue>
#include<deque>
#include<map>
#include<stack>
#include<bitset>
#include<list>
#include<cassert>
#include<numeric>
#include<iomanip>

using namespace std;

const int N = 1e5 + 5;
int n, m;
vector<int> graph[N];
int cost[N];
bool mark[N];

int isTree(int v, int p)
{
	p++;
	mark[v] = true;
	for (int i = 0; i < graph[v].size(); i++)
	{
		int u = graph[v][i];
		if (!mark[u])
		{
			isTree(u, p);
		}
	}
	return p;
}

int main()
{
	cout << "Impossible";
	exit(0);
	cin >> n >> m;
	for (int i = 0; i < n; i++)
	{
		cin >> cost[i];
	}
	for (int i = 0; i < m; i++)
	{
		int u, v;
		cin >> u >> v;
		graph[u].push_back(v);
		graph[v].push_back(u);
	}
	int tmp = isTree(0, 0);
	if (tmp == n)
	{
		cout << 0;
		exit(0);
	}
	memset(mark, 0, sizeof mark);

}
	
            


 
