code: func need(m, max, extra int) (int, int, int) {
  	if m <= extra {
  		return m, max, extra - m
  	}
  	max += extra - m
  	if max <= 0 {
  		return m + max, 0, 0
  	}
  	return m, max, 0
  }
docs: // need called on (m, max, extra) uses max m out of extra, and then max
  // if needed, returns the adjusted counts