<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:
    def longestDiverseString(self, a: int, b: int, c: int) -> str:
        # Initialize a dictionary to store character counts
        char_count = {"a": a, "b": b, "c": c}
        # Initialize an empty string to store the constructed happy string
        result = ""

        # Greedily construct the happy string
        while char_count:
            # Sort characters based on counts in descending order
            sorted_chars = sorted(char_count.items(), key=lambda x: x[1], reverse=True)
            max_char, max_count = sorted_chars[0]

            # Check if it's possible to put max_char into result without violating consecutive character constraint
            if len(result) >= 2 and result[-1] == result[-2] == max_char:
                # If not, check if there's another character available to put
                if len(sorted_chars) > 1 and sorted_chars[1][1] > 0:
                    max_char = sorted_chars[1][0]
                else:
                    break

            # If max_count is less than or equal to 0, break the loop
            if max_count <= 0:
                break

            # Append max_char to result and decrement its count in char_count
            result += max_char
            char_count[max_char] -= 1

        # Return the constructed happy string
        return result
16400