10 5 1000000000
1 1 1 2 2 1 2 2 2 2
 5 3 3
1 2 2 1 1
 2 4 1
1 1
 1 1000000000 1000000000
100000
 5 3 2
1 1 2 1 1
 5 2 4
1 2 3 2 1
 1 10 10
1

10000000000
 0
 2
 0
 7
 0
 0

#include <bits/stdc++.h>
using namespace std;
pair<long long, long long> a[300000];
long long cd, n, k, cur, m, sums[300000];
long long getSum(int l, int r) { return sums[r] - sums[l - 1]; }
long long dp(int st, int en) {
  if (st > en) {
    return 0;
  }
  if (st + 1 == en) {
    if (a[st].first != a[en].first) {
      return (a[st].second + a[en].second) * m;
    }
    return (a[st].second + a[en].second) % k * m;
  }
  if (st == en) {
    return (a[st].second) * m % k;
  }
  if (a[st].first == a[en].first) {
    if ((a[st].second + a[en].second) % k == 0) {
      long long l = dp(st + 1, en - 1);
      if (l == 0) {
        return (a[st].second + a[en].second) % k;
      }
      return (a[st].second + a[en].second + l);
    } else {
      return getSum(st, en) * m -
             ((a[st].second + a[en].second) / k * k) * (m - 1);
    }
  } else {
    return getSum(st, en) * m;
  }
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cin >> n >> k >> m;
  for (int i = 1; i <= n; i++) {
    long long x;
    cin >> x;
    if (a[cur].first == x) {
      a[cur].second++;
      if (a[cur].second == k) {
        cur--;
      }
    } else {
      a[++cur].first = x;
      a[cur].second = 1;
    }
  }
  for (int i = 1; i <= cur; i++) {
    sums[i] = sums[i - 1] + a[i].second;
  }
  cout << dp(1, cur);
}
