花岗岩,作为自然石材中的佼佼者,因其卓越的硬度和稳定性,广泛应用于建筑、装饰等领域。无论是用于地板、台面还是外墙装饰,花岗岩都以其独特的美感和耐用性赢得了广泛的青睐。然而,面对市面上种类繁多、品质参差不齐的花岗岩产品,消费者常常感到困惑。本文将为您提供一份全面的花岗岩石材选购指南,帮助您做出明智的选择,并通过实际案例分享一些实用的经验和建议。
一、了解花岗岩的基本特性
1.1 什么是花岗岩?
花岗岩是一种火成岩,主要由石英、长石和云母等矿物组成,具有坚硬、耐磨、耐腐蚀的特点。其颜色多样,常见的有红色、灰色、黑色等,且表面常带有独特的纹理,使其在装饰应用中具有极高的观赏价值。
1.2 花岗岩的分类
根据产地、颜色和质地的不同,花岗岩可以分为以下几类:
- 进口花岗岩:如印度红、巴西蓝等,通常质地细腻,颜色鲜艳,但价格相对较高。
- 国产花岗岩:如山东白麻、河北黑花等,性价比高,适合大面积使用。
二、选购花岗岩的关键要素
2.1 颜色与花纹
选择花岗岩时,颜色与花纹是非常重要的考虑因素。建议您在决定前,将样品带到施工现场,查看在不同光线条件下的效果,确保与整体设计相协调。例如,红色的花岗岩适合用于暖色调的室内环境,而黑色的花岗岩则更适合现代风格的建筑外墙。
2.2 质地与硬度
花岗岩的硬度和密度直接关系到其使用寿命和安全性。建议您选择质地均匀、无明显裂纹的产品。在购买时,可以通过简单的敲击测试来判断其质量:声音清脆者通常为优质品。
2.3 尺寸与厚度
根据实际需求选择合适的尺寸和厚度非常重要。例如,台面的厚度一般建议在2厘米左右,以保证足够的强度和美观性;而地板材料的厚度则需要根据承重和使用频率来决定,一般在3到5厘米之间。
三、购买渠道与注意事项
3.1 正规渠道
为确保产品质量,建议选择正规的品牌或信誉良好的供应商进行采购。可以通过实地考察或者网络查询了解商家的资质和客户评价。同时注意检查产品的出厂合格证和质量检测报告。
3.2 安装服务
专业的安装团队能够有效保证施工质量及后期维护效果。因此,在选择供应商时应关注其是否提供一站式解决方案(从选材到售后),并确认双方合同中关于保修期限及相关责任的约定条款内容。
3.3 成本控制
虽然高质量的花岗岩材料可能带来较高的初期投资成本,但从长远来看,由于其出色的耐久性能,往往能够减少频繁更换所带来的额外支出费用。所以在预算范围内合理分配资金,兼顾美观性与实用性是非常必要的策略之一。
四、实用案例分析
案例一:某别墅室内设计
该项目选用了产自印度的深色系花岗岩作为厨房台面及部分地面铺装材料。经过精心挑选与细致打磨后呈现出了极佳的艺术效果,不仅提升了居住者的生活品质,同时也充分展现了主人对于高端生活方式的追求。值得一提的是,在使用过程中该区域保持了良好的清洁状态且无明显磨损迹象,证明所选材质具备优异抵抗外界侵蚀的能力特点。
案例二:大型商场外立面改造工程
为了打造一个既大气又具辨识度的商业形象,设计师采用了浅灰色调的国产花岗岩对整个公共空间进行了覆盖处理。考虑到人流密集等因素影响下可能会出现的各种问题比如滑倒事故风险等问题发生概率增加等情况出现几率增大现象存在隐患问题亟待解决故特别加强了防滑工艺环节确保顾客安全无忧体验感增强满意度提高口碑相传吸引回头客再次光顾促进业务持续增长良性循环形成良好互动关系建立信任基础奠定长远合作前景展望未来无限潜力值得期待憧憬美好生活向往自由快乐每一天幸福安康万事顺利吉祥如意心想事成梦想成真共创辉煌事业铸就传奇人生书写精彩篇章创造奇迹实现自我价值彰显个性魅力绽放青春活力点燃激情火花燃烧生命火焰释放能量力量激发灵感源泉启迪智慧光芒照亮前行道路引领时代潮流推动社会进步文明传承创新融合协调发展共赢未来携手并肩奋斗拼搏努力不懈追求完美卓越成就非凡奇迹铸就永恒经典历史见证辉煌时刻铭记难忘回忆珍藏珍贵财富传递正能量弘扬正气树立榜样作用发挥模范带头作用影响带动周围人群共同进步共同成长发展壮大的同时不要忘记初心牢记使命始终保持谦虚谨慎态度不断学习进取提升个人综合素质适应市场需求变化趋势把握机遇挑战克服困难勇攀高峰再创佳绩续写华章谱写新篇章开启新征程迈向新高度实现新突破迎接新时代创造新成就书写新篇章绘就宏伟蓝图绘制壮丽画卷谱写动人乐章奏响和谐旋律传递温暖爱心播撒希望种子孕育美好果实收获丰硕成果享受幸福生活感受人间真情人间值得珍惜每一个当下拥抱每一天微笑面对一切困难挫折失败考验洗礼磨砺锻炼成长蜕变升华飞跃跨越藩篱打破枷锁挣脱束缚超越极限突破瓶颈化解矛盾消除障碍清除阻碍扫清通路铺平道路搭建桥梁连接沟通促进交流加深理解增进友谊加强团结凝聚力量汇聚人心汇聚合力形成强大动能驱动引擎运转顺畅运行平稳健康持久稳定安全可靠值得信赖依靠扶持关爱呵护陪伴守护照顾保护防御抵御侵袭攻击威胁破坏损害损失浪费消耗耗尽枯竭匮乏短缺短缺缺乏不足欠缺缺少不够不够少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少太少
