#include <bits/stdc++.h>
using namespace std;
const long long PR = 1000000009;
vector<int> sz, llist[1009], visited(1009, 0), ct;
long long n, m, k, a, b;
int cnt = 0, cnt1 = 0;
void dfs(int vertx) {
  cnt++;
  cnt1++;
  visited[vertx] = 1;
  for (int i = 0; i < llist[vertx].size(); i++) {
    int nxt = llist[vertx][i];
    if (!visited[nxt]) dfs(nxt);
  }
}
int main() {
  ios::sync_with_stdio(false);
  cin >> n >> m >> k;
  for (int i = 0; i < k; i++) {
    cin >> a;
    ct.push_back(a - 1);
  }
  for (int i = 0; i < m; i++) {
    cin >> a >> b;
    a--;
    b--;
    llist[a].push_back(b);
    llist[b].push_back(a);
  }
  for (int i = 0; i < ct.size(); i++) {
    int now = ct[i];
    cnt = 0;
    dfs(now);
    sz.push_back(cnt);
  }
  sort(sz.begin(), sz.end());
  long long ans = 0;
  for (int i = 0; i < k; i++) {
    long long val = sz[i];
    if (i == k - 1) val += n - cnt1;
    ans += (val * (val - 1)) / 2;
  }
  cout << ans - m << endl;
  return 0;
};
