<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def make_multisat(nucsat_tuples):
 """Creates a rst.sty Latex string representation of a multi-satellite RST subtree (i.e. a set of nucleus-satellite relations that share the same nucleus. """

    nucsat_tuples = [tup for tup in nucsat_tuples]  # unpack the iterable, so we can check its length
    assert len(nucsat_tuples) > 1, \
        "A multisat relation bundle must contain more than one relation"

    result = "\dirrel\n\t"
    first_relation, remaining_relations = nucsat_tuples[0], nucsat_tuples[1:]
    
    relname, nuc_types, elements = first_relation
    first_nucleus_pos = current_nucleus_pos = nuc_types.index('N')
    result_segments = []
    
    for i, nuc_type in enumerate(nuc_types):
        if nuc_type == 'N':
            result_segments.append(NUC_TEMPLATE.substitute(nucleus=elements[i]))
        else:
            result_segments.append(SAT_TEMPLATE.substitute(satellite=elements[i], relation=relname))
    
    for (relname, nuc_types, elements) in remaining_relations:
        for i, nuc_type in enumerate(nuc_types):
            if nuc_type == 'N':  # all relations share the same nucleus, so we don't need to reprocess it.
                continue
            else:
                result_segment = SAT_TEMPLATE.substitute(satellite=elements[i], relation=relname)
                if i < first_nucleus_pos:  # satellite comes before the nucleus
                    result_segments.insert(current_nucleus_pos, result_segment)
                    current_nucleus_pos += 1
                else:
                    result_segments.append(result_segment)
    
    return result + '\n\t'.join(result_segments)