An insurance contract implies that risk is ceded from ordinary policy holders to companies. Companies do the same thing between themselves as well. The rationale could be the same; i.e., that a financially weaker agent is passing risk to a stronger one. In reality even the largest companies do this to diversify risk, and financially the cedent may be as strong as the reinsurer. The problem of determining reinsurance contracts which are optimal with respect to some reasonable criterion has been studied extensively within actuarial science. Different contact types are considered such as stop-loss contracts where the reinsurance company covers risk above a certain level, and insurance layer contracts where the reinsurance company covers risk within an interval. The contracts are then optimized with respect to some risk measure, such as value-at-risk or conditional tail expectation. In the present paper we consider the problem of minimizing value-at-risk in the case of multiple insurance layer contracts. Such contracts are known to be optimal in the univariate case, and the optimal contract is easily determined. In the multivariate case, however, finding an optimal set of contracts is not easy. By considering solutions where the risk is balanced between the contracts, we show how to find a solution using an efficient iterative Monte Carlo method. We also consider more general unbalanced solutions for which a slightly more complex optimization method must be applied. The methods are illustrated by numerical examples.