#include <iostream>
#include<bits/stdc++.h>

#define fo(i,start,end) for(int i=start;i<end;i++)
using namespace std;

int FindDigitSum(int num){
	int sum = 0;
	while(num > 0){
		sum += (num%10);
		num /= 10;
	}
	return sum;
}

int main() {
	vector<int>arr = {12,33,6,51,85};
	int n = arr.size();
	// vector<int>DigitSum;
	// DigitSum.reserve(n);
	unordered_map<int,int>mp;
	int MaxSumSeen = -1e9;
	for(int i=0;i<n;i++){
		int DigitSum = FindDigitSum(arr[i]);
		if(mp.find(DigitSum) == mp.end()){
			mp[DigitSum] = arr[i];
		}
		else{
				// we need bigger values , dont replace from the map just find the max sum
				int sum = arr[i] + mp[DigitSum];
				MaxSumSeen = max(MaxSumSeen,sum);
				if(arr[i] > mp[DigitSum]){
					mp[DigitSum] = arr[i];
				}
		}
	}
	cout<<"Maximum Sum is :"<<MaxSumSeen<<endl;
	return 0;
}