<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def pagerank_lazy_push(s, r, w_i, a_i, push_node, rho, lazy):
 """ Performs a random step with a self-loop. Introduced in: Andersen, R., Chung, F., & Lang, K. (2006, October). Local graph partitioning using pagerank vectors. In Foundations of Computer Science, 2006. FOCS'06. 47th Annual IEEE Symposium on (pp. 475-486). IEEE. """

    # Calculate the A, B and C quantities
    A = rho*r[push_node]
    B = (1-rho)*(1 - lazy)*r[push_node]
    C = (1-rho)*lazy*(r[push_node])

    # Update approximate Pagerank and residual vectors
    s[push_node] += A
    r[push_node] = C

    # Update residual vector at push node's adjacent nodes
    r[a_i] += B * w_i