#P3862. 链表合并

链表合并

链表合并

题目描述

给定一个链表 head

如果链表中有一段连续相邻且值相同的节点,那么将这一整段节点一次性合并成一个新节点,新节点的值等于这一段所有节点值的和。

本题规定:

  • 每一段连续相同值只合并一次;
  • 如果合并完成后,相邻节点的值再次相同,也不再继续合并

请输出完成上述操作后的链表。

输入格式

第一行输入一个整数 n,表示链表长度。

第二行输入 n 个整数,表示链表节点值。

输出格式

输出两行:

第一行输出一个整数 m,表示合并后链表长度。

第二行输出 m 个整数,表示合并后链表的节点值。

数据范围

1 <= n <= 10^5

-10^9 <= val <= 10^9

样例 1

输入

3
1 2 3

输出

3
1 2 3

样例 2

输入

5
2 2 2 3 3

输出

2
6 6

说明

原链表中的连续段分别为 [2,2,2][3,3],它们分别合并成值为 66 的两个节点。合并后虽然相邻值相同,但不再继续合并。