a:6:{i:0;s:20064:"				<div class="h1"><h1>Splendors of the North East Tour</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.kunzongtourandtravel.com/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.kunzongtourandtravel.com/tour-packages.htm" title="Tour Packages">Tour Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>Splendors of the North East Tour</p>
				<br />
				
								
						<script language="javascript"> 
							function topDestinationToggle(showHideDiv, switchTextDiv) {
							var ele = document.getElementById(showHideDiv);
							var text = document.getElementById(switchTextDiv);
							if(ele.style.display == "block") {
								ele.style.display = "none";
							  text.innerHTML = "View More &#9660;";
							}
							else {
							  ele.style.display = "block";
							  text.innerHTML = "View Less &#9650;";
							}
							}
		                </script>
											<script type="text/javascript">			
					(function($){	
					  $(function(){
						$('[id^=detailslider]').each(function(){
							$(this).DG_Slider({
								auto: true, mode:'fade', pager:true, pagerType:'short',controls:true
							});
						})
				
						$('a[rel=gall]').fancybox()
					  });	
					}(jQuery))
					</script>
					
					<br />
					<div class="data">
					<table class="w100 formTable bdr0 imgWidth">
					<tr>
					<td class="p10px">
					<table class="w100 packageForm">
											<tr>
						<td class="b p5px w125px vat">Duration </td>
						<td class="p5px pl0px vat">
						10 Nights / 11 Days 
						</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Destination Covered </td>
						<td class="p5px pl0px vat">Gangtok, Darjeeling, Kalimpong, Lachung, West Sikkim, North Sikkim</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Price (Starting From) </td>
						<td class="p5px pl0px vat"><span class="dif">On Request</span></td>
						</tr>
												<tr>
						<td></td>
						<td>
						<p>
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.kunzongtourandtravel.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Splendors of the North East Tour - Tour Package"/>
						<input type="hidden" name="allocate_type" value="tour"/>
						<a href="#" onclick="document.getElementById('frmpackagedetail').submit();" class="button p7px pl12px pr12px c5px b large dib mt10px">Book Your Tour</a>
						<input type="hidden" name="pkg_slno" value="75829"/>
						</form>
						</p>
						</td>
						</tr>
											</table>
					</td>
											<td class="p10px vat imgWidth150 w150px lh0">
						<div class="demo-wrap">
						<ul class="lsn m0px p0px" >
															<li class="bdr bw3px c5px p1px"><div class="dt"><p class="ac vam dtc w150px h150px"><a rel="gall" data-fancybox="showZoomImage" href="https://ttw.wlimg.com/package-images/photo-big/dir_16/451899/134862.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_16/451899/134862.jpg"  width="150" height="150"    alt="Splendors of the North East Tour" title="Splendors of the North East Tour" /></a></p></div></li>
															</ul>
						</div>
						</td>
											</tr>
					</table>
					</div>
					<br />
					
											<div class="headHr">
			            <p class="p7px b pl10px xlarge">Tour Itinerary</p>
			            </div>
			            
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 1:</b> Arrival and transfer to Darjeeling
								</p>
								<p class="aj">As you will arrive at New Jalpaiguri Railway Station (NJP)/Bagdogra Airport (IXB)/Tenzing Norgay Bus Stand (Junction), our tour representative will receive and assist you in your journey to the hill station of Darjeeling. The hill station is 68 km from NJP, 69 km from Bagdogra airport and 65 km from Tenzing Norgay Bus Stand, and from every of these points, journey to Darjeeling is most likely to be covered under 1 hour and 50 mins.<br />
<br />
Darjeeling in the state of West Bengal, is a beautiful hill station that is blessed with picturesque spots and unscathed beauty of nature. Not just gifted with an appealing natural beauty, Darjeeling as a town also has so many tourist attractions to offer. The town of Darjeeling has a great degree of diversity, especially when it comes to its culture and religion. This can be best understood by the setting up of numerous Buddhist monasteries all over the town. Therefore, showing the region’s inclination towards Buddhism, amidst the majority of Hindus. As you arrive, make a check in to the hotel for an overnight stay. Feel free to move out in the evening for shopping.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 2:</b> Sightseeing in Darjeeling
								</p>
								<p class="aj">Get on an early morning drive to Tiger Hill, which is one of the most popular attractions in Darjeeling. You are required to wake up early as the hill is renowned for offering a breathtaking sunrise.<br />
<br />
Tiger Hill (11 km from Darjeeling) at an altitude of around 8400 ft, is the highest peak in Darjeeling. Once at the top, tourists can catch an awesome sunrise that brightens the snow clad Himalayan mountains infront of it. The star attraction is Mt Kanchenjunga, which turns golden due to the rays of the rising sun, you can also catch the sight of a glistening Mt Everest from Tiger Hill if the weather is clear.<br />
<br />
As you will come down from Tiger Hill, Ghoom Monastery (8 km from Darjeeling) will come in your way. Popularly known as Yiga Choeling Monastery, Ghum Monastery is the first Tibetan Buddhist monastery in Darjeeling. It boasts of a 15 feet high statue of Maitreya Buddha, which is the future form of Lord Buddha.<br />
<br />
Darjeeling is also famous for its world heritage toy train, the ride of which you will enjoy while visiting the Batasia Loop and War Memorial. Batasia Loop is a magnificent loop that which gives a panoramic view of the whole Darjeeling valley, while the war memorial resides in the middle of the loop, built in honor of the martyrs of Indian army.<br />
<br />
After all these visits, return back to your hotel for breakfast. Relax for sometime, and then head on to visit the other attractions of Darjeeling. Prime attractions that would be covered in the sightseeing trip are Padmaju Naidu National Park, Himalayan Mountaineering Institute, Ropeway, Tenzing Gumpo Rock, Tea Estate, Peace Pagoda and Natural History Museum. Return back to hotel by evening and if you wish, feel free to roam in the nearby market.<br />
<br />
Overnight stay at the hotel.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 3:</b> Transfer to Kalimpong and Sightseeing at Kalimpong
								</p>
								<p class="aj">Post breakfast, embark on a journey to Kalimpong (54 km away/55 mins). Kalimpong, like Darjeeling, is also a prominent hill station in West Bengal, which is highly renowned for its natural beauty. Besides the charm of its natural surroundings, Kalimpong is also known for its religious attractions that include Buddhists Monasteries, revered Hindu temples and ancient churches.<br />
<br />
As you reach Kalimpong, check-in to the prebooked hotel. After relaxing for sometime, embark on a sightseeing trip of the city of Kalimpong. Popular attractions that would be covered under this are Deolo Hill, Dr Graham Homes, Durpin monastery, Pine View Nurseries, Mangaldham and Forest Museum.<br />
<br />
Deolo hill in the northeast of Kalimpong town, is the highest point in the region and is renowned for its picturesque beauty. The hill offers an enchanting sight of the Himalayas in the north and the Teesta river, which flows in the valley down below. The lush green hill has a height of around 1704 meters and is a popular picnic spot.<br />
<br />
Post all the sightseeing, return back to your hotel. Feel free to roam around in the nearby market in the evening. Overnight stay in the hotel.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 4:</b> Kalimpong to Pelling transfer
								</p>
								<p class="aj">Post breakfast, embark on a morning drive to Pelling (91 km/2 hour away) from Kalimpong. Nestled at an altitude of around 2150 m, Pelling is a beautiful hill station in the western part of Sikkim. The virgin territory of Pelling overlooks the mighty Himalayas, that includes Kanchenjunga as its prime mountain peak. Owing to its natural topography, Pelling is filled with numerous attractions that comprise waterfalls, serene spots and city attractions. Besides nature’s splendors, Pelling is also home to a lot of sacred Buddhist Monasteries.<br />
<br />
As you reach the town, you will check in to the hotel. Relax for sometime and move out in the evening to explore the nearby settlements that include shopping centers as well. Post that, return back to your hotel for an overnight stay.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 5:</b> Pelling Local Sightseeing
								</p>
								<p class="aj">Post breakfast, you would be embarking on a sightseeing trip in and around Pelling. On this day, you would be visiting Pemayangtse monastery, Rimbi waterfalls, Rimbi Rock Garden, Kecheoplari lake, Kanchenjunga waterfalls, Rabdantse ruins.<br />
<br />
About 2 kms from the main town of Pelling lies the renowned Pemayangtse monastery, which belongs to the Nyingma sect of Buddhism. Built in the year 1705 AD, the monastery is one of the first and finest in Pelling. Divided into different floors, the monastery houses a notable collection of Buddhist antique idols, scriptures as well as sculptures.<br />
<br />
Just near to the Pemayangtse monastery is the ruined city of Rabdantse. It is believed to be the second capital of the former kingdom of Sikkim. At present, the city is left only with its ruins and some chortens. Part of Buddhist religious pilgrimage circuit, Rabdentse ruins are amongst the top historical attractions in Pelling.<br />
<br />
Situated at a sharp curve on the side of a road, Kanchenjunga waterfall has its address 28 kms from Pelling. Falling from a great height, the waterfall looks so amazing and with its lush green surroundings, the place is perfect to wind up in the lap of nature.<br />
<br />
Evenings would be free to explore the nearby locations, which include the helipad and shopping center. Overnight stay in hotel</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 6:</b> Transfer to Gangtok and Gangtok Local Sightseeing
								</p>
								<p class="aj">Day 6 of our amazing northeast tour is totally dedicated to Gangtok. After an early breakfast, bid goodbye to Pelling, and embark on a journey to the capital of Sikkim, Gangtok (116 km/2 hours and 27 mins).<br />
<br />
Gangtok in the northern part of Sikkim, is bounded by lush green Shivalik hills that has numerous attractions spread all over its territory. Being a prominent center of Tibetan Buddhist culture and learning., Gangtok has numerous monasteries established in the nooks and corners of the city.<br />
<br />
As you reach Gangtok, you would be checking in to the prebooked hotel. After relaxing for a couple of hours, you will be on your way to visit the popular attractions in Gangtok. The sightseeing tour of Gangtok will cover Directorate of Handicrafts and Handloom, Enchey Monastery, Research Institute of Tibetology, Do Drul Chorten, White Hall, and Flower Hall.<br />
<br />
Belonging to the Nyingma order of Vajrayana Buddhism, Enchey Monastery in Gangtok holds a significant place in the history and culture of the town. The monastery is believed to be 200 years old and was established by Lama Drupthob Karpo. Inides of the renowned monastery are filled with paintings and murals of religious kings and scriptures of Mahayana Buddhist deities.<br />
<br />
Do Drul Chorten is a renowned stupa in the city of Gangtok, that was built in the year 1945. Being built by Trulshik Rinpoche, the stupa boasts of Nyingma order of Tibetan Buddhism. Highlighting features about the Stupa include 108 prayer wheels, that have mantras inscribed on them. Besides prayer wheels, the stupa also speaks highly of its Kanjur holy books, relics and other religious objects.<br />
<br />
The half day sightseeing tour of Gangtok will be over by evening. At that time, you can move out to the nearest shopping center or market.<br />
<br />
Overnight stay at hotel</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 7:</b> Transfer to Lachung
								</p>
								<p class="aj">Have an early morning breakfast and bid goodbye to Gangtok for Lachung (103 km/2 hr 47 min) Located further north in Sikkim, Lachung is a hill station that resides at an altitude of 3000 m in the lower Himalayas. The hill station of Lachung encompasses snow clad mountain peaks, gurgling streams and wonderful waterfalls. Being a hill station of Sikkim, Lachung is also reputed for its Buddhist monasteries.<br />
<br />
You would be likely to reach Lachung by late afternoon or early evening. As you will reach, you would be making a check-in to the pre booked hotel. You can stroll in the nearby surroundings in the evening. Return back to your hotel around 8 pm for dinner and overnight stay.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 8:</b> Sightseeing at Yumthang
								</p>
								<p class="aj">Post breakfast, drive to Yumthang, which is around 26 km from the hill station of Lachung. Situated at an altitude of 3564 meters, Yumthang is a Himalayan grazing ground that has some of the most exotic species of flowers. Being flourished by a tributary of Teesta river, Yumthang valley has over 24 species of Rhododendron and many alpine varieties, that blossom in every spring. Besides the flowers, the valley is also famous for Shingba Rhododendron Sanctuary.<br />
<br />
You will be returning back to the hotel in Lachung for lunch. Post that, you would be visiting Lachung monastery, Cottage Industry and waterfalls.<br />
<br />
Established in 1880, Lachung monastery is a Buddhist monastery, which follows Nyingma order of Buddhism. The monastery resides at the confluence of Lachen and Lachung river, at an altitude of around 3000 m.<br />
<br />
Post that, return to your hotel for an overnight stay.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 9:</b> Transfer to Gangtok
								</p>
								<p class="aj">After having a sumptuous breakfast, embark on a return journey to Gangtok. The drive is likely to be 103 km long, within a time period of 2 hours and 47 mins. If the weather permits, you can enjoy the sight of various Himalayan mountains. It includes the likes of Mt Kanchenjunga, Mt. Pandim, Mt Siniolchu and Mt Kabru. Besides these majestic peaks, alpine forest covers on the way will surely make your ride wonderful.<br />
<br />
Back in Gangtok by evening. Feel free to explore the nearby market or local shopping center like the MG Road mall. Overnight stay in Hotel.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 10:</b> Excursion to Tsomgo Lake and Baba Mandir
								</p>
								<p class="aj">This is the last day of our amazing northeast tour. After having your morning breakfast, you will be heading towards Tsomgo lake and Baba Mandir.<br />
<br />
Tsomgo lake (39 km/59 mins from Gangtok) is a glacial lake, which is located in the eastern part of Sikkim. Situated at an altitude of around 12,400 ft, the lake offers one of the best landscapes in the region. Apart from being a natural splendor, Tsomgo lake is also a sacred lake which is devoted by Hindu and Buddhist pilgrims.<br />
<br />
Baba Harbhajan Singh Mandir or simply Baba Mandir (55 km/1 hr and 20mins from Gangtok) is a sacred shrine that was built in memory of an Indian army soldier. It is located between Jelep La and Nathu La.<br />
<br />
Feel free to explore the nearby market in the evening, which would be followed by an overnight stay in hotel.</p>
								</td>
								</tr>
								</table>					
								</div><div id="show_more_content" style="display:none;">
									<div class="data">
									<table class="w100 formTable bdr0 imgWidth">
									<tr>
									<td class="p10px vat">
									<p class="b large mb5px"><b class="dif">Day 11:</b> Departure-Gangtok to Siliguri
									</p>
									<p class="aj">Post breakfast, check out from your hotel and head towards New Jalpaiguri Station/Bagdogra airport/Tenzing Norgay Bus Stand in Siliguri for your onward journey back home.</p>
									</td>	
									</tr>
									</table>				
									</div>					
							</div>							<p class="mt10px ac"><a class="buttonBig p5px10px dib b" id="more_button" href="javascript:topDestinationToggle('show_more_content','more_button');" >View More &#9660;</a></p>
													<br />
												 <p class="headHr p7px b pl10px xlarge">Tour Detail</p>
			             <div class="data p15px aj">
										
						<p class="large b mb5px dif">Inclusions :</p>
						<ul>
															<li>Hotel</li>
																		<li>Sightseeing</li>
															</ul>
						<br />
											
						<p class="large b mb5px dif">Terms &amp; Conditions :</p>* Some Advance Percentage of total booking amount 
* Airfare/Transport fare to be paid full at one time in advance.~^#^~* Upon cancellation, refund will be made after deducting the Retention Amount. 
* Retention Amount varies as per the number of days left before your package start date. ~^#^~												</div>
												
						<div class="ac mb10px">
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.kunzongtourandtravel.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Splendors of the North East Tour - Tour Package"/>
						<input type="hidden" name="allocate_type" value="tour"/>
						<a href="#" onclick="document.getElementById('frmpackagedetail').submit();" class="button p7px pl12px pr12px c5px b large dib mt10px">Book Your Tour</a>
						<input type="hidden" name="pkg_slno" value="75829"/>
						</form>
						</div>
						
						";i:1;s:62:"Book Splendors of the North East Tour - 111 Days Tour Packages";i:2;s:166:"book splendors of the north east tour - 111 days tour packages, valley tour packages, gangtok, darjeeling, kalimpong, lachung, west sikkim, north sikkim tour packages";i:3;s:213:"Book Splendors of the North East Tour - 111 Days tour packages from Kunzong Tours and Travel - Get attractive 111 Days Valley  tour packages for  Gangtok, Darjeeling, Kalimpong, Lachung, West Sikkim, North Sikkim.";i:4;s:470:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Gangtok, Darjeeling, Kalimpong, Lachung, West Sikkim, North Sikkim"        
		                 },
		      "description": "",
		      "name": "Splendors of the North East Tour",
		      "telephone": "+91-9593716601"
		    }
		    </script>
			";i:5;N;}