A full sort is unnecessary. you could just iterate the sizes once and track the two largest values.

```rust
let (a,b) = sizes.iter().fold((0, 0), |(a,b), &(_,sz)| if sz > a { (sz,a) } else if sz > b { (a,sz) } else { (a,b) });
if b > 0 && a > b*3 {
    // ...
```