#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define pb push_back
 
const int maxn = 2e5 + 20;
 
int n, m, comp1, comp2, cnt;
vector<int> g[maxn];
bool vis[maxn];

ll C (int a)
{
	return 1ll * a * (a-1) / 2;
}

void dfs (int v)
{
	vis[v] = true;
	cnt ++;
	for (int i : g[v])
		if (!vis[i])
			dfs (i);
}

int main()
{
	ios::sync_with_stdio(0); cin.tie(0);
	cin >> n >> m;
	for (int i = 0; i < m; i++)
	{
		int a, b;
		cin >> a >> b;
		g[--a].pb(--b); g[b].pb(a);
	}
	dfs (0);
	comp1 = cnt;
	cnt = 0;
	dfs (1);
	comp2 = cnt;
	if (comp1 < comp2)
		swap (comp1, comp2);
	comp1 += n - (comp1 + comp2);
	cout << C (comp1) + C (comp2) - m << endl;


	return 0;
}