WP_Query: include custom post type only with specific meta value

If the key-2 is uniquely assigned to cpt-3 post type, then you can add another meta query argument to your query arguments:

array(
    'key'     => 'key-2',
    'value'   => 1,
    'compare' => '='
)

If not, you can run another query, and then merge them as follows:

$final_query = array_merge( (array) $query_1, (array) $query_2 );

But, you should use get_posts() instead of WP_Query() since you can’t merge objects with methods. The get_posts() returns an array of posts which can be merged.

However you should notice, meta queries are expensive and will slow down your website ( probably ).