#include <bits/stdc++.h>
using namespace std;
int c[1001], deg[1001];
int fa[1001];
int sx[1001], ss[1001];
bool v[1001], vx[1001], vv[1001];
inline int find(int x) {
  if (x != fa[x]) fa[x] = find(fa[x]);
  return fa[x];
}
int main() {
  int n, m, k;
  scanf("%d%d%d", &n, &m, &k);
  int i;
  for (i = 1; i <= k; i++) {
    scanf("%d", &c[i]);
    v[c[i]] = true;
  }
  for (i = 1; i <= n; i++) fa[i] = i;
  int s, t;
  for (i = 1; i <= m; i++) {
    scanf("%d%d", &s, &t);
    int fx = find(s), fy = find(t);
    deg[s]++;
    deg[t]++;
    if (fx != fy) fa[fx] = fy;
  }
  for (i = 1; i <= n; i++) fa[i] = find(i);
  for (i = 1; i <= n; i++) {
    sx[fa[i]]++;
    ss[fa[i]] += deg[i];
    if (v[i]) vx[fa[i]] = true;
  }
  int ans = 0;
  int sum = 0, maxx = 0, sumx = 0;
  for (i = 1; i <= n; i++) {
    if (!vv[fa[i]]) {
      sumx += sx[fa[i]] * (sx[fa[i]] - 1) / 2 - ss[fa[i]] / 2;
      vv[fa[i]] = true;
    }
    if (!vx[fa[i]]) {
      sumx += sum * sx[fa[i]];
      sum += sx[fa[i]];
      sx[fa[i]] = 0;
    } else {
      if (sx[fa[i]] > maxx) maxx = sx[fa[i]];
    }
  }
  printf("%d\n", sum * maxx + ans + sumx);
  return 0;
}
