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;
int main() {
  long long n, k, m, ans;
  cin >> n >> k >> m;
  long long a[2 * n];
  for (long long i = 0; i < n; i++) {
    cin >> a[i];
    a[i + n] = a[i];
  }
  int flag = 0;
  for (long long i = 0; i < n - 1; i++) {
    if (a[i] != a[i + 1]) {
      flag = 1;
      break;
    }
  }
  if (flag == 0) {
    ans = n * m;
    ans -= ((n * m) / k) * k;
    cout << ans;
    return 0;
  }
  flag = 0;
  if (k >= n) {
    for (long long i = 0; i < n - 1; i++) {
      if (a[i] != a[i + 1]) {
        flag = 1;
        cout << n * m;
        break;
      }
    }
    if (flag == 0) {
      ans = n * m;
      ans -= ((n * m) / k) * k;
      cout << ans;
    }
  } else {
    if (a[0] != a[n - 1] || m == 1) {
      stack<long long> st;
      stack<long long> cnt;
      st.push(a[0]);
      cnt.push(1);
      long long i = 1;
      while (!st.empty() && i < n) {
        if (a[i] == st.top()) {
          st.push(a[i]);
          cnt.push(cnt.top() + 1);
        } else {
          st.push(a[i]);
          cnt.push(1);
        }
        if (cnt.top() == k) {
          long long rem = k;
          while (rem--) {
            cnt.pop();
            st.pop();
          }
        }
        i++;
      }
      cout << st.size() * m;
    } else {
      stack<long long> st;
      stack<long long> cnt;
      st.push(a[0]);
      cnt.push(1);
      long long i = 1;
      while (!st.empty() && i < 2 * n) {
        if (a[i] == st.top()) {
          st.push(a[i]);
          cnt.push(cnt.top() + 1);
        } else {
          st.push(a[i]);
          cnt.push(1);
        }
        if (cnt.top() == k) {
          long long rem = k;
          while (rem--) {
            st.pop();
            cnt.pop();
          }
        }
        i++;
      }
      if (st.size() == 0)
        cout << "0";
      else {
        long long result = 2 * n - st.size();
        ans = n * m - result * (m - 1);
        cout << ans;
      }
    }
  }
  return 0;
}
