#include <iostream>
#include <algorithm> // For min and max

using namespace std;

int main() {
  long long N, K, L;
  cin >> N >> K >> L;

  // Initialize the boundaries of the combined area
  long long leftmost = 0;
  long long rightmost = (N - 1) * (K + L);
  long long bottommost = 0;
  long long topmost = (N - 1) * (K + L);

  // Iterate through each square
  for (long long i = 0; i < N; ++i) {
    // Calculate the boundaries of the current square
    long long square_left = i * (K + L);
    long long square_right = i * (K + L) + K + L - 1;
    long long square_bottom = i * (K + L);
    long long square_top = i * (K + L) + K + L - 1;

    // Update the combined area boundaries
    leftmost = min(leftmost, square_left);
    rightmost = max(rightmost, square_right);
    bottommost = min(bottommost, square_bottom);
    topmost = max(topmost, square_top);
  }

  // Calculate the area of the combined area
  long long area = (rightmost - leftmost + 1) * (topmost - bottommost + 1);

  cout << area << endl;

  return 0;
}