def METHOD_NAME(weight_list, bias_list, agg, x):
    """
        weight list: list of conv2d weight ([out, in, m, n] * a)
        bias list: list of conv2d bias ([out] * a)
        agg: aggregation weights (a)
        x: input tensor (b, in, p, q)
        return output in (b, out, p, q)
    """
    weight_list = torch.cat([w.unsqueeze(0) for w in weight_list],
                            dim=0)  # n_ada, out, in, m, n
    weight = torch.sum(
        weight_list * rearrange(agg, 'a -> a 1 1 1 1'), dim=0)  # out, in, m, n
    bias_list = torch.cat([w.unsqueeze(0) for w in bias_list],
                          dim=0)  # n_ada, out
    bias = torch.sum(bias_list * rearrange(agg, 'a -> a 1'), dim=0)  # out
    x = F.conv2d(
        x, weight=weight, bias=bias, stride=1, padding=1)  # 1 (b out) p q
    return x