a:6:{i:0;s:17378:"				<div class="h1"><h1>North East Delight with Pelling Tour</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.sikkimtourtourism.com/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.sikkimtourtourism.com/packages.htm" title="Packages">Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>North East Delight with Pelling 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">
						6 Nights / 7 Days 
						</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Destination Covered </td>
						<td class="p5px pl0px vat">Gangtok, Darjeeling, Kalimpong, Pelling</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.sikkimtourtourism.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="North East Delight with Pelling 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="115718"/>
						</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_13/370039/188622.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_13/370039/188622.jpg"  width="150" height="150"    alt="North East Delight with Pelling Tour" title="North East Delight with Pelling 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
								</p>
								<p class="aj">Your journey to the wonderful northeastern gateways will start as you reach the New Jalpaiguri Station or Bagdogra airport in West Bengal. From here, our tour representative will be escorting you to your onward journey to Darjeeling, which is an alluring hill station In the Indian state of West Bengal.<br />
<br />
Positioned at the northern part of West Bengal, Darjeeling has snow clad Himalayan peaks and dense forests lined up all around it. Drive to Darjeeling is likely to take nearly 1 hr and 40 mins. On entering the region of Darjeeling, you would be welcomed by lush green tea plantations, which have been the true face of the hill station. Besides these, Darjeeling has a lot to offer, like the panoramic mountain views, which will leave you spellbound.<br />
<br />
On your arrival in Darjeeling, you would be checking into a pre-booked 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 2:</b> Sightseeing in Darjeeling
								</p>
								<p class="aj">Visit the magnificent Tiger Hill the first thing in the morning. The reason behind its early visit is the view of the morning sun glistening the lofty snow clad peaks of Kanchenjunga.<br />
<br />
Tiger Hill is one of the most popular tourist attractions in Darjeeling, that have found their address 11 km from the town of Darjeeling. Not just Kanchenjunga, if you are lucky, you can even watch the head of the highest peak in the world, Mt Everest turning all golden by the sun. On your way back to hotel, you would be visiting Ghoom monastery and Batasia Loop. Like the Tiger Hill, these two also hold a great amount of significance.<br />
<br />
Just 7 km short from the town of Darjeeling, lies the famous Ghoom monastery. Belonging to the Gelupka sect of Buddhism, the monastery has a 15 ft statue of Lord Buddha as one of its main attractions, which is known as Maitreya Buddha. Besides the Maitreya Buddha, the monastery also houses idols of other Buddhist deities as well. This includes the likes of Buddha of Compassion and Tsongkhapa.<br />
<br />
Another prominent attraction to visit in the early hours of the day is Batasia Loop, which is a fascinating railway track loop. To watch this, you would be boarding the world renowned and vintage toy train of Darjeeling. From the loop, you can have a whole view of the lovely landscapes of Darjeeling, plus the flowery garden on which the loop is encircled, adds on to the charm of Batasia loop.<br />
<br />
Post these visits, head back to your hotel for a sumptuous breakfast. The other half of the day is meant to cover other attractions of Darjeeling. Under this, you would be visiting the Padmaja Naidu Himalayan Zoological Park, Himalayan Mountaineering Institute, Tibetan Refugee Self Help Center (closed on Sunday), Tea Garden and Ropeway.<br />
<br />
There is also a Peace Pagoda located in the town of Darjeeling, which also would be covered in our sightseeing trip. With the aim of creating peace all around, the Peace Pagoda or Stupa invites people of all castes, creeds and religion to visit the place and develop mutual harmony for each other. It is popular as Japanese Peace Pagoda in Darjeeling. 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> Kalimpong & Sightseeing at Kalimpong
								</p>
								<p class="aj">As soon as you are done with your breakfast, embark on a journey to Kalimpong, which is another famous hill station in the state of West Bengal. Kalimpong resides at an elevation of around 1200 meters and the main town is on a ridge area connecting two hills. Owing to its magnificent Himalayan beauty and invigorating climate, the place is no less than a paradise.<br />
<br />
After a journey of 1 hr and 40 mins, you would be arriving at Kalimpong. As you arrive, you would be quickly heading to a sightseeing tour of Kalimpong. Under this, you would be visiting Deolo hill, Teesta valley, Pine View Point, Orchid, Golf Club and Dr Graham’s Homes School.<br />
<br />
Amongst them, Deolo hill holds quite prominence. As mentioned earlier, Kalimpong lies on a ridge between two hills, Deolo hill is one of them. Situated at an elevation of around 1700 meters, Deolo hill is the highest point of the hill station. Owing to the location of the hill, you can have an enchanting view of the whole town of Kalimpong, the nearby Relli valley and the bloodline of Kalimpong, the beautiful Teesta river. Once you reach the top of the hill, you would be welcomed with a park of exotic flowers.<br />
<br />
Besides these attractions, our tour representative will also make you visit the scared Durpin hill and Durpin monastery, which is around 5 km from the main town of Kalimpong. After this, call it a day and make a check in to a pre-booked 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 4:</b> Pelling & Sightseeing at Pelling
								</p>
								<p class="aj">Post breakfast, bid goodbye to Kalimpong and make your way to Pelling, which is a prominent hill station in the western part of Sikkim. Situated at an altitude of around 2100 meters, Pelling is known for its natural splendor and tranquility. Unspoiled and covered with dense alpine vegetation, waterfalls after every couple of miles and the sight of the greater Himalayas and Kanchenjunga overshadowing the valley, the town is perfect to wind up in the lap of nature.<br />
<br />
Journey to Pelling from Kalimpong is likely to take 2 hours and as you arrive in this serene paradise, you would be embarking on a sightseeing trip to the numerous attractions or jewels that the town feels proud of. Amongst them, the most prominent ones include Kanchenjunga falls and Rimbi waterfalls. At first, you would be heading to Rimbi waterfalls, which is around 12 kms from Pelling. Rimbi waterfalls are situated right at the banks of Rimbi river and are remarkable to watch.<br />
<br />
Moving ahead from these falls are the king size Kanchenjunga falls. Situated around 28 km from the main town of Pelling and named after the mighty Kanchenjunga mountain, Kanchenjunga falls is renowned for its grandeur and beauty. The existence of this splendid waterfall largely remained unknown until the mid 90s, when a local tour operator accidentally discovered it at a sharp curve on the roadside. The place is ideal for picnicking with family and friends. Thus, you can have a nice time relaxing near the gushing Kanchenjunga falls.<br />
<br />
Other attractions that you will be surely visiting in Pelling including Kecheopalri lake and Rimbi rock garden which lies in close vicinity of the majestic falls. Also visit Sinsore Bridge –Asia's 2nd Highest Bridge, Post all the sightseeing, return to the town of Pelling and make a check in to the 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> Gangtok Local Sight Seeing
								</p>
								<p class="aj">Day 5 of our exclusive tour is dedicated to tasting the flavors of the Himalayan town of Gangtok. Nestled in the Shivalik hills of the Himalayas, close to the Buddhist country of Bhutan, Gangtok is blessed with a mystical blend of natural beauty and Buddhism. Owing to this, Gangtok is dotted with several Buddhist monasteries that are believed to be quite ancient. Drive from Pelling to Gangtok is roughly going to take 2 hrs and 30 mins and as you arrive in Gangtok, you would be embarked on a sightseeing trip.<br />
<br />
Sightseeing in Gangtok includes the very famous Rumtek monastery, which is also the largest of its kind in the state. Serving as the an important seat of the Karmapa Lama, the monastery holds a lot of significance for the religion of Buddhism. It enshrines a golden Stupa that has relics of the ancient Karmapa in the form of statues and paintings. Make a visit here and shed all your travel tiredness in the spiritual ambience of the monastery. After Rumtek, you would be taken to Do Drul Chorten Stupa, which is one of the biggest in Sikkim. Encircled by Chorten Lhakhang and Guru Lhakhang, it boasts of two huge statues of Guru Rinpoche.<br />
<br />
As you would be done visiting the religious sects of Gangtok, head towards other attractions in the capital of the state, which include the Research Institute of Tibetology, Botanical Garden, Tashi View Point and Directorate of handicrafts and handlooms. 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 6:</b> Tsomgo Lake & Baba Mandir
								</p>
								<p class="aj">Being situated in the Himalayan topography, Gangtok has various natural attractions which are filled with mystical beauty and serenity. One of them is the breathtaking Tsomgo lake which offers one of the most beautiful sights in the region. The lake is nestled at an altitude of 12,400 ft and the drive from Gangtok to it is likely to take around 1 hour to reach. Tsomgo or Changu lake is actually a glacial lake, which derives its waters from the snow capped mountains it get surrounded by. The lake is also a home of Brahmin ducks and migratory birds. Being a prominent tourist place, the banks of the lake have shops selling trinkets and Yak cheese. So you can buy some for yourself. The locals also provide for yak rides so you can have a nice time exploring the breathtaking surroundings sitting on the back of a yak. Admire the beauty of the lake and pay a visit to the Lord Shiva temple, which is located on the banks of Tsomgo Lake. We can also visit Nathu La Pass, which is the border of India and China.<br />
<br />
Post this, move towards Baba Harbhajan Singh Memorial War temple, which is 20 kms from Tsomgo Lake near Gangtok. Situated at an altitude of around 13000 feet, close to Jelep Pass, is a memorial shrine, dedicated to a soldier of the 23rd Punjab Regiment, who died in the 1962 war between India and China. As per the legend, after meeting his tragic death in the war, soldier Harbhajan Singh came in the dream of one of his peers, and asked to build a war memorial after him. Following this, Indian Army built a war memorial in order to commemorate the sacrifice of this martyr. Later on, this memorial started enjoying the privileges of a sacred shrine. The original Baba Harbhajan Singh temple was built in the year 1983 at the bunker of the late soldier. When you will visit this bunker, you will come across dresses, stationeries and pictures of the soldier. There also lies a small wishing poodle, in which you can throw a coin and make a wish.<br />
<br />
After a day full of excursion, return back to your hotel in Gangtok. Spend the evening at leisure in your hotel or do some shopping in the nearby malls and market. Overnight stay in Gangtok.</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> Departure
								</p>
								<p class="aj">This day marks the end of our exclusive Northeast tour. Post breakfast, you would be transferred to New Jalpaiguri Station/Bagdogra Airport/ Tenzing Norgay Bus Stand for your onward journey back home. These destinations are around 130 Km from Gangtok so it is advised you start early.</p>
								</td>
								</tr>
								</table>					
								</div>						<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.sikkimtourtourism.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="North East Delight with Pelling 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="115718"/>
						</form>
						</div>
						
						";i:1;s:75:"Book North East Delight with Pelling Tour - 6 Nights / 7 Days Tour Packages";i:2;s:152:"book north east delight with pelling tour - 6 nights / 7 days tour packages, valley tour packages, gangtok, darjeeling, kalimpong, pelling tour packages";i:3;s:184:"Vineet Holidays offers North East Delight with Pelling Tour - 6 Nights / 7 Days tour package, budget Valley tour packages for Gangtok, Darjeeling, Kalimpong, Pelling at exciting price.";i:4;s:447:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Gangtok, Darjeeling, Kalimpong, Pelling"        
		                 },
		      "description": "",
		      "name": "North East Delight with Pelling Tour",
		      "telephone": "+91-9593985033"
		    }
		    </script>
			";i:5;N;}