Loop through remaining craft.entries
I think you can just add .offset(3) to the "remaining" craft.entries query to get the result that you want. Or you could exclude the id's of the first three.

But, this is quite ineffective (performance wise), since you're doing four separate queries to get the entries. An alternative would be to loop over all, and use the loop object together with conditionals to build the output. Something like this:

{% for entry in craft.entries.section('shows') %}
    {% if loop.index==1 %}
        &lt;div class="row"&gt;
            &lt;div class="card-grid card-grid__two-thirds"&gt;
                {% include "_partials/card" %}
            &lt;/div&gt;
            &lt;div class="card-grid card-grid__one-third"&gt;
                &lt;h1&gt;AD&lt;/h1&gt;
            &lt;/div&gt;
        &lt;/div&gt;

    {% elseif loop.index==2 %}
        &lt;div class="row"&gt;
            &lt;div class="card-grid card-grid__two-thirds"&gt;
                {% include "_partials/card" %}
            &lt;/div&gt;

    {% elseif loop.index==3 %}
            &lt;div class="card-grid card-grid__one-half"&gt;
                {% include "_partials/card" %}
            &lt;/div&gt;
        &lt;/div&gt;

    {% elseif loop.index&gt;3 %}
        {% if loop.index==4 %}
             &lt;div class="row grid-remaining"&gt;
        {% endif %}

        &lt;div class="card-grid card-grid__one-third"&gt;
                {% include "_partials/card" %}
        &lt;/div&gt;

        {% if loop.index==loop.last %}
            &lt;/div&gt;
        {% endif %}
    {% endif %}
{% endfor %}