WP_Query articles order by offset in collumns

Separate the posts in two different arrays, then loop over both separately:

$columns      = array ( 'first' => array (), 'second' => array () );
$first_column = array( 1, 3, 4, 5, 6, 7 );

// separation
foreach ( $the_query->posts as $index => $post )
{
    if ( in_array( $index + 1, $first_column ) )
        $columns[ 'first' ][] = $post;
    else
        $columns[ 'second' ][] = $post;
}

unset ( $post );

// render one column
echo 'First column<br>';
foreach ( $columns[ 'first' ] as $p )
{
    print $p->ID
        . get_the_title( $p ) . '<br>'
        . get_the_post_thumbnail( $p->ID ) . '<br>';
}

// render the next column
echo 'Second column<br>';
foreach ( $columns[ 'second' ] as $p )
{
    print $p->ID
        . get_the_title( $p ) . '<br>'
        . get_the_post_thumbnail( $p->ID ) . '<br>';
}