<p>A string <code>s</code> is called <strong>happy</strong> if it satisfies the following conditions:</p>

<ul>
	<li><code>s</code> only contains the letters <code>&#39;a&#39;</code>, <code>&#39;b&#39;</code>, and <code>&#39;c&#39;</code>.</li>
	<li><code>s</code> does not contain any of <code>&quot;aaa&quot;</code>, <code>&quot;bbb&quot;</code>, or <code>&quot;ccc&quot;</code> as a substring.</li>
	<li><code>s</code> contains <strong>at most</strong> <code>a</code> occurrences of the letter <code>&#39;a&#39;</code>.</li>
	<li><code>s</code> contains <strong>at most</strong> <code>b</code> occurrences of the letter <code>&#39;b&#39;</code>.</li>
	<li><code>s</code> contains <strong>at most</strong> <code>c</code> occurrences of the letter <code>&#39;c&#39;</code>.</li>
</ul>

<p>Given three integers <code>a</code>, <code>b</code>, and <code>c</code>, return <em>the <strong>longest possible happy </strong>string</em>. If there are multiple longest happy strings, return <em>any of them</em>. If there is no such string, return <em>the empty string </em><code>&quot;&quot;</code>.</p>

<p>A <strong>substring</strong> is a contiguous sequence of characters within a string.</p>

<p>&nbsp;</p>
<p><strong class="example">Example 1:</strong></p>

<pre>
<strong>Input:</strong> a = 1, b = 1, c = 7
<strong>Output:</strong> &quot;ccaccbcc&quot;
<strong>Explanation:</strong> &quot;ccbccacc&quot; would also be a correct answer.
</pre>

<p><strong class="example">Example 2:</strong></p>

<pre>
<strong>Input:</strong> a = 7, b = 1, c = 0
<strong>Output:</strong> &quot;aabaa&quot;
<strong>Explanation:</strong> It is the only correct answer in this case.
</pre>

<p>&nbsp;</p>
<p><strong>Constraints:</strong></p>

<ul>
	<li><code>0 &lt;= a, b, c &lt;= 100</code></li>
	<li><code>a + b + c &gt; 0</code></li>
</ul>

class Solution {
public:
    string longestDiverseString(int a, int b, int c) {

        priority_queue<pair<int,char>>pq;

        if(a>0)
        pq.push({a,'a'});
        if(b>0)
        pq.push({b,'b'});
        if(c>0)
        pq.push({c,'c'});

        string s="";
        while(!pq.empty())
        {

            if(pq.size()==0)
            break;
            pair<int,char>tp1=pq.top();
            pq.pop();
            cout<<tp1.second<<endl;
            if(s.size()==0 || s[s.length()-1]!=tp1.second){
                int currval=tp1.first;
                int value= min(2,currval);
                for(int i=0;i<value;i++)
                {
                    s+=tp1.second;
                }
                currval-=value;
                if(currval>0)
                {
                    pq.push({currval,tp1.second});
                }
                continue;
            }
            if(pq.size()==0)
            break;
            pair<int,char>tp2=pq.top();
            pq.pop();
               cout<<tp2.second<<endl;
             if(s.size()==0 || s[s.length()-1]!=tp2.second){
                pq.push(tp1);
                int currval=tp2.first;
                int value= min(2,currval);
                if(currval>=2 && pq.size()>0)
                {
                    value=1;
                }
                for(int i=0;i<value;i++)
                {
                    s+=tp2.second;
                }
                
                currval-=value;
                 cout<<currval<<endl;
                if(currval>0)
                {
                    pq.push({currval,tp2.second});
                }
               
                continue;
            }

            break;
        }
        return s;
        
    }
};
7400