Suppose `n` represents the number of items in the problem. The heuristics function takes as input a `demand` array of shape (n,) and an integer as the capacity of every bin, and it returns a `heuristics` array of shape (n,n). 
`heuristics[i][j]` indicates how promising it is to put item i and item j in the same bin.

### Solution Function Signature:
```python
def heuristics(demand: np.ndarray, capacity: int) -> np.ndarray:
```