You could simply define:

```
vector<lower=0>[1:nX_direct] beta_con; // intercept and slope hyper-priors constrained
vector[nX_direct:K] beta_uncon; // intercept and slope hyper-priors constrained
```

adding the following after the parameter block

```
transformed parameters {
vector[K] beta = append_row(beta_con, beta_uncon);
}
```

Although you use a `array[] vector`

structure too.

This will, if you go this road, require assignments in loop for each `1,.., N_pts`

.

` beta_p_con ~ multi_normal_cholesky(beta_constrained, quad_form_diag(L_con, sigma_p_con)); // new corr`

And this will require a truncated multivariate-normal distribution. See here: