<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def eval_atmost(self, e, n, **kwargs):
 """ Evaluate an expression to get at most `n` possible solutions. Errors if either none or more than `n` solutions are returned. :param e: the expression to get a solution for :param n: the inclusive upper limit on the number of solutions :param kwargs: Any additional kwargs will be passed down to `eval_upto` :raise SimUnsatError: if no solution could be found satisfying the given constraints :raise SimValueError: if more than `n` solutions were found to satisfy the given constraints :return: The solutions for `e` """

        r = self.eval_upto(e, n+1, **kwargs)
        if len(r) > n:
            raise SimValueError("Concretized %d values (must be at most %d) in eval_atmost" % (len(r), n))
        return r