<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def add(parent, idx, value):
 """Add a value to a dict."""

  if isinstance(parent, dict):
    if idx in parent:
      raise JSONPatchError("Item already exists")
    parent[idx] = value
  elif isinstance(parent, list):
    if idx == "" or idx == "~":
      parent.append(value)
    else:
      parent.insert(int(idx), value)
  else:
    raise JSONPathError("Invalid path for operation")