```json
{
  "sym_variables": [
    ("x0", "diapers"),
    ("x1", "candles"),
    ("x2", "cookies"),
    ("x3", "cartons of milk"),
    ("x4", "paper towel rolls")
  ],
  "objective_function": "7*x0 + 8*x1 + 9*x2 + 5*x3 + 6*x4",
  "constraints": [
    "10*x0 + 18*x3 + 1*x4 >= 52",
    "4*x1 + 13*x2 + 18*x3 >= 52",
    "10*x0 + 4*x1 + 13*x2 >= 52",
    "4*x1 + 13*x2 + 1*x4 >= 52",
    "10*x0 + 4*x1 + 1*x4 >= 52",
    "10*x0 + 4*x1 + 18*x3 >= 52",
    "10*x0 + 18*x3 + 1*x4 >= 36",
    "4*x1 + 13*x2 + 18*x3 >= 36",
    "10*x0 + 4*x1 + 13*x2 >= 36",
    "4*x1 + 13*x2 + 1*x4 >= 36",
    "10*x0 + 4*x1 + 1*x4 >= 36",
    "10*x0 + 4*x1 + 18*x3 >= 36",
    "10*x0 + 18*x3 + 1*x4 >= 51",
    "4*x1 + 13*x2 + 18*x3 >= 51",
    "10*x0 + 4*x1 + 13*x2 >= 51",
    "4*x1 + 13*x2 + 1*x4 >= 51",
    "10*x0 + 4*x1 + 1*x4 >= 51",
    "10*x0 + 4*x1 + 18*x3 >= 51",
    "10*x0 + 18*x3 + 1*x4 >= 38",
    "4*x1 + 13*x2 + 18*x3 >= 38",
    "10*x0 + 4*x1 + 13*x2 >= 38",
    "4*x1 + 13*x2 + 1*x4 >= 38",
    "10*x0 + 4*x1 + 1*x4 >= 38",
    "10*x0 + 4*x1 + 18*x3 >= 38",
    "10*x0 + 18*x3 + 1*x4 >= 45",
    "4*x1 + 13*x2 + 18*x3 >= 45",
    "10*x0 + 4*x1 + 13*x2 >= 45",
    "4*x1 + 13*x2 + 1*x4 >= 45",
    "10*x0 + 4*x1 + 1*x4 >= 45",
    "10*x0 + 4*x1 + 18*x3 >= 45",
    "10*x0 + 18*x3 + 1*x4 >= 42",
    "4*x1 + 13*x2 + 18*x3 >= 42",
    "10*x0 + 4*x1 + 13*x2 >= 42",
    "4*x1 + 13*x2 + 1*x4 >= 42",
    "10*x0 + 4*x1 + 1*x4 >= 42",
    "10*x0 + 4*x1 + 18*x3 >= 42",
    "9*x0 + 11*x3 >= 24",
    "9*x0 + 2*x1 >= 31",
    "2*x1 + 19*x4 >= 30",
    "9*x0 + 19*x4 >= 33",
    "4*x2 + 11*x3 >= 37",
    "9*x0 + 4*x2 + 11*x3 >= 32",
    "2*x1 + 11*x3 + 19*x4 >= 32",
    "4*x2 + 11*x3 + 19*x4 >= 32",
    "9*x0 + 2*x1 + 19*x4 >= 32",
    "9*x0 + 2*x1 + 11*x3 >= 32",
    "9*x0 + 4*x2 + 11*x3 >= 37",
    "2*x1 + 11*x3 + 19*x4 >= 37",
    "4*x2 + 11*x3 + 19*x4 >= 37",
    "9*x0 + 2*x1 + 19*x4 >= 37",
    "9*x0 + 2*x1 + 11*x3 >= 37",
    "9*x0 + 4*x2 + 11*x3 >= 42",
    "2*x1 + 11*x3 + 19*x4 >= 42",
    "4*x2 + 11*x3 + 19*x4 >= 42",
    "9*x0 + 2*x1 + 19*x4 >= 42",
    "9*x0 + 2*x1 + 11*x3 >= 42",
    "9*x0 + 4*x2 + 11*x3 >= 24",
    "2*x1 + 11*x3 + 19*x4 >= 24",
    "4*x2 + 11*x3 + 19*x4 >= 24",
    "9*x0 + 2*x1 + 19*x4 >= 24",
    "9*x0 + 2*x1 + 11*x3 >= 24",
    "9*x0 + 4*x2 + 11*x3 >= 31",
    "2*x1 + 11*x3 + 19*x4 >= 31",
    "4*x2 + 11*x3 + 19*x4 >= 31",
    "9*x0 + 2*x1 + 19*x4 >= 31",
    "9*x0 + 2*x1 + 11*x3 >= 31",
    "10*x0 + 13*x2 <= 108",
    "10*x0 + 4*x1 <= 139",
    "10*x0 + 4*x1 + 13*x2 + 18*x3 + 1*x4 <= 139",
    "2*x1 + 4*x2 <= 140",
    "2*x1 + 19*x4 <= 103",
    "11*x3 + 19*x4 <= 79",
    "4*x2 + 19*x4 <= 176",
    "4*x2 + 11*x3 <= 153",
    "9*x0 + 2*x1 <= 206",
    "2*x1 + 11*x3 + 19*x4 <= 245",
    "9*x0 + 2*x1 + 4*x2 <= 166",
    "9*x0 + 4*x2 + 19*x4 <= 71",
    "4*x2 + 11*x3 + 19*x4 <= 109",
    "2*x1 + 4*x2 + 11*x3 <= 76",
    "9*x0 + 11*x3 + 19*x4 <= 157",
    "9*x0 + 2*x1 + 11*x3 <= 247",
    "9*x0 + 2*x1 + 4*x2 + 11*x3 + 19*x4 <= 247",
    "10*x0 + 4*x1 + 13*x2 + 18*x3 + x4 <= 266",
    "9*x0 + 2*x1 + 4*x2 + 11*x3 + 19*x4 <= 249"

  ]
}
```

```python
import gurobipy as gp

# Create a new model
m = gp.Model("optimization_problem")

# Create variables
diapers = m.addVar(vtype=gp.GRB.INTEGER, name="diapers")
candles = m.addVar(vtype=gp.GRB.INTEGER, name="candles")
cookies = m.addVar(vtype=gp.GRB.INTEGER, name="cookies")
milk = m.addVar(vtype=gp.GRB.INTEGER, name="cartons_of_milk")
paper_towels = m.addVar(vtype=gp.GRB.INTEGER, name="paper_towel_rolls")


# Set objective function
m.setObjective(7 * diapers + 8 * candles + 9 * cookies + 5 * milk + 6 * paper_towels, gp.GRB.MAXIMIZE)

# Add constraints
m.addConstr(10 * diapers + 18 * milk + 1 * paper_towels >= 52)
m.addConstr(4 * candles + 13 * cookies + 18 * milk >= 52)
m.addConstr(10 * diapers + 4 * candles + 13 * cookies >= 52)
m.addConstr(4 * candles + 13 * cookies + 1 * paper_towels >= 52)
m.addConstr(10 * diapers + 4 * candles + 1 * paper_towels >= 52)
m.addConstr(10 * diapers + 4 * candles + 18 * milk >= 52)
# ... (rest of the value constraints)

m.addConstr(9 * diapers + 11 * milk >= 24)
m.addConstr(9 * diapers + 2 * candles >= 31)
m.addConstr(2 * candles + 19 * paper_towels >= 30)
m.addConstr(9 * diapers + 19 * paper_towels >= 33)
m.addConstr(4 * cookies + 11 * milk >= 37)
# ... (rest of the usefulness constraints)


m.addConstr(10 * diapers + 13 * cookies <= 108)
m.addConstr(10 * diapers + 4 * candles <= 139)
m.addConstr(10 * diapers + 4 * candles + 13 * cookies + 18 * milk + 1 * paper_towels <= 139)
# ... (rest of the upper bound constraints)

m.addConstr(10 * diapers + 4 * candles + 13 * cookies + 18 * milk + paper_towels <= 266)
m.addConstr(9 * diapers + 2 * candles + 4 * cookies + 11 * milk + 19 * paper_towels <= 249)


# Optimize model
m.optimize()

# Print results
if m.status == gp.GRB.OPTIMAL:
    print('Obj: %g' % m.objVal)
    for v in m.getVars():
        print('%s %g' % (v.varName, v.x))
elif m.status == gp.GRB.INFEASIBLE:
    print("The model is infeasible.")
else:
    print("Optimization ended with status %d" % m.status)

```
