func_code_string: #include <bits/stdc++.h>   using namespace std;   class UnionFind {    private:    public:     vector<int> p, rank, setSize, minn;     int numSets;     UnionFind(int N) {       setSize.assign(N, 1);       numSets = N;       rank.assign(N, 0);       p.assign(N, 0);       minn.resize(N);       for (int i = 0; i < N; i++) {         p[i] = i;         minn[i] = i;       }     }     int findSet(int i) {       if (p[i] == i)         return i;       else {         p[i] = findSet(p[i]);         minn[p[i]] = min(minn[p[i]], i);         return p[i];       }     }     bool isSameSet(int i, int j) { return findSet(i) == findSet(j); }     void unionSet(int i, int j) {       if (!isSameSet(i, j)) {         numSets--;         int x = findSet(i), y = findSet(j);         if (rank[x] > rank[y]) {           p[y] = x;           setSize[x] += setSize[y];           minn[x] = min(minn[x], minn[y]);         } else {           p[x] = y;           setSize[y] += setSize[x];           minn[y] = min(minn[x], minn[y]);           if (rank[x] == rank[y]) rank[y]++;         }       }     }     int numDisjointSets() { return numSets; }     int sizeOfSet(int i) { return setSize[findSet(i)]; }   };   class fenwick_tree {     vector<long> t;     long size;       public:     fenwick_tree(long n) {       t.assign(n + 1, 0);       size = n + 1;     }     long LSOne(long k) { return k & (-k); }     void update(long index, long val) {       for (; index < size; index += LSOne(index)) t[index] += val;     }     long query_full(long a, long b) {       return query(b) - ((a <= 1) ? 0 : query(a - 1));     }     long query(long b) {       if (b < 1) return 0;       long sum = 0;       for (; b; b -= LSOne(b)) sum += t[b];       return sum;     }   };   long long gcd(long long a, long long b) {     while (b != 0) {       long long t = b;       b = a % b;       a = t;     }     return a;   }   int main() {     ios::sync_with_stdio(false);     cin.tie(0);     long long w, h, i, j, k, ans, c, s;     cin >> w >> h;     ans = 0;     for (i = 1; i < w; i++) {       c = min(i, w - i);       s = 0;       for (j = 0; j < h; j++) s += (h - j) / 2;       ans += c * s;     }     cout << ans <<   n ;     return 0;   }   