a:6:{i:0;s:20396:"				<div class="h1"><h1>Delightful North East with Pelling Tour</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.rajastravels.com/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.rajastravels.com/tour-packages.htm" title="Tour Packages">Tour Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>Delightful North East 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, 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.rajastravels.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Delightful North East 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="85249"/>
						</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/370602/149889.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_13/370602/149889.jpg"  width="150" height="150"    alt="Delightful North East with Pelling Tour" title="Delightful North East 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 in Darjeeling
								</p>
								<p class="aj">The remarkable vacation starts shortly after you reach at New Jalpaiguri Station (NJP), Bagdogra airport (IXB) and Tenzing Norgay Bus Stand (Junction) in West Bengal. From here, you need to travel to Darjeeling, which rests on the northern extreme of the state. Once you arrive, our tour executive will escort you to the hill-town of Darjeeling via road. The serene hill station of Darjeeling is elevated at an altitude of 7100 ft in West Bengal, and 68 km from NJP Railway Station, 69 km from Bagdogra airport and 65 km From the Tenzing Norgay Bus stand.

Engulfed in the snow-clad peaks of Kanchenjunga, Darjeeling is amongst the celebrated tourist attractions in this corner of India. The charm of the hill-town can be defined by its verdant green tea plantations, which are known to be the supreme in the world, its rolling hills and alpine forests. Apart from the acres of tea estates, Darjeeling is also famous for its monasteries and an assortment of town attractions. Other than natural attractions, Darjeeling is also famous for its rustic colonial charm, like the ancient world heritage Darjeeling Himalayan Railway system.

As you reach Darjeeling, check in to our pre-reserved hotel. Spend your evenings at leisure in the guesthouse and if you wish to move out, feel free to lurk around local shopping centers.</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> Darjeeling Local Sightseeing
								</p>
								<p class="aj">As soon as dawn cracks, you begin the day by 3:45 AM, by heading towards Tiger Hill, which is around 11 km from the main town of Darjeeling. Tiger Hill is one of the major places of interest in Darjeeling and can be reached on foot easily, all along the splendid tea plantations. The top of the hill overlooks the colossal peak in Sikkim, Mt. Kanchenjunga, and if the weather is clear, Mt. Everest also. Its claim to fame has been its tranquilizing view of the sunrise. When rays of the morning sun fall on Mt. Kanchenjunga it illuminates beautifully with a golden orange reflection, and thus offering a breathtaking sight.

While returning, pay a casual visit to the some of the most popular attractions in Darjeeling. Begin from Ghoom monastery, then War Memorial and finally, Batasia Loop.

Just 8 km short of Darjeeling, you will come across Ghoom Monastery, which is resting at an elevation of around 7400 feet. Ghoom Monastery was constructed in the year 1850 by Lama Sherab Gyatso. The well-famed monastery belongs to the Yellow Hat Sect, known as Gelupka. Once inside the monastery, you will witness a 15 foot model of Lord Buddha, which is also referred as Maitreya Buddha. In Buddhism, Maiteya Buddha means Buddha of the upcoming era or the coming Buddha. A compelling fact about the figurine of Maitreya Buddha is that it is all created up of clay, all imported from Tibet. Besides the sculpture of Buddha, the monastery is also noted for housing a vast collection of Buddhist manuscripts.

After departing from the monastery, hop on to the vintage Toy train as it makes its path through the striking landscapes in Darjeeling. The toy train also whistles away through the splendid Batasia Loop, which makes its curve at the Hill Cart road. The loop has a vibrant garden of exotic flowers built in the inner circle of the loop. From the Batasia Loop, you can have a spectacular view of the alluring Darjeeling valley along with the snow-clad peaks of Kanchenjunga.

Right in the heart of the Batasia Loop, stands the War Memorial. As obvious from its name, the structure was erected as a tribute to numerous Gorkha soldiers, who were martyred in military operations since India’s independence. Undoubtedly, an amazing attraction, the War Memorial is amongst the high-flying ones in Darjeeling.

After these jaunts, return back to your inn for savoring the supper. Nearly half an hour later, you would be embarking on seeing the sights in the main town of Darjeeling. This includes visits to Himalayan Montaineering Institute, Tensing Gumpo Rock, Padmaju Naidu Zoological Park, Tibetan Refugee Self Help Cente and Natural History Museum.

Conclude your day on a serene note by visiting the heritage of world peace, Japanese Peace Pagoda, which is located within the complex of other attractions. The Peace Pagoda exhibits four manifestations or forms of Lord Buddha and throws the light on uniting people of all races for global harmony. Pay your visits there and return back to your suite for a snuggy overnight stay. Sundown is meant to walk around the local milieu or shopping in the nearby markets, although you can even prefer staying indoors and stretch limbs.</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 Pelling
								</p>
								<p class="aj">Shortly after finishing breakfast, you would be transferred to Pelling, which is situated in the western division of Sikkim. Highly lauded for its natural vistas and quietude, Pelling in Sikkim is a high-flying hill-town in the northeast India. Elevated at an altitude of around 6800 ft, the hill-town offers a panoramic sight of the highest peak in Sikkim, Mt. Kanchenjunga. Not just Kanchenjuga, the place provides a kaleidoscope of mountain peaks, like Kanchenjunga, Rathong, Koktang, Pandim, Sinlolchu and Kumbhakaran. Apart from these the lofty mountain peaks, prettiness of this hill-town lies in its verdant green alpine and Rhododendron forests that are flawless for nature trails. The area is also a dwelling for some of the rarest genus of Himalayan animals. Kanchendzonga National Park in this part of Sikkim provides a natural habitation to them. Amidst all the greenery, lies some beautifully cascading waterfalls, which are counted amongst the wonderful natural spots to re-energize with family and friends.

The drive from Darjeeling to Pelling is likely to take around 1 hour and 55 mins. Shortly after reach the hill-town, make a check-in to a reserved hotel for a cozy overnight stay. The remaining hours would be at leisure. You can choose to unwind yourself in your suites or head out for a shopping in the nearby market places.</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 local sightseeing
								</p>
								<p class="aj">Fourth day of our elite tour is dedicated to seeing the sights in and around Pelling. What else can be better than remembering the Lord to kickstart the day. Owing to this, you will be heading to Pemayangtse monastery at the first place.

About 2km from the main town of Pelling, lies the prime monastery of Ngingma sect, Pemayangtse Monastery. This Buddhist sacred center is believed to be erected in the year 1705, by Gyalwa Lhatsun Namkha Jigme. The celebrated monastery is like the sanctum of all the other Nyingma monasteries and assumed to uphold the order of this sect. Being struck by earthquakes twice, the architecture of Pemayangtse monastery underwent several reconstructions.

Presently, the floors of the monastery are adorned with paintings, figurines and ancient scriptures. Besides the paintings and sculptures, you will witness eight manifestations of Padmasambhava, in the form of statuette, which appears highly striking. The center of attraction remains the prime figure of Padmasambhava, which represents Tantric form of Buddhism. As you would be done with the monastery, hop on for a nature trip to spots like Kecheoplari lake, Rimbi waterfalls, Rimbi rock garden and Kanchenjunga falls.

Located 27 km from the town of Pelling, Khecheoplari lake is amongst the most pristine lakes of Sikkim. Journey to the sacred lake would take you right across a thick forest cover. The lake is beautiful, placid and clean to explore.

Just a km ahead, at a sharp curve on the road side, lies the beguiling Kanchenjunga falls. Owing to its charm and magnificence, the waterfalls are amongst the key attractions in Darjeeling. The waterfall is perennial and it gets its spring from colossal glaciers high up in the mountains. There are also several shops and stalls located in the vicinity of the falls. You can sip a nice cup of coffee amidst the intriguing milieu of the Kanchenjunga falls.

Rimbi Rock Garden or Sewaro Rock Garden is a lure of gardens, pools and zigzag foot paths. Located around 12 km from the main town of Pelling, the rock garden is a flawless place to relish a picnic. As you move 5 km from here, you will come face to face with Rimbi waterfalls, which is awe-inspiring to every eyeball.

Soon after completing the jaunt, return to your hotel for a slackening stay. Feel free to explore the local markets of Pelling after sundown.</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> Transfer from Pelling and Gangtok Local Sightseeing
								</p>
								<p class="aj">Munch your breakfast, embark on an expedition to the capital of Sikkim, Gangtok. The capital is around 116 km from Pelling, so you will have to depart in the early hours.

Gangtok being one of the celebrated places in Sikkim, is a chief tourist destination that is flaked with multiple beautiful monasteries, and rests under the shroud of lofty Himalayan peaks. Most intriguing fact about Sikkim is that due to its proximity to Himalayan ranges, the destination offers a panoramic view of the colossal Kanchenjunga mountain, which is the highest in Sikkim. Apart from the captivating Himalayan beauty, Gangtok is enriched with cultural biodiversity flowing deep inside its city life.

Drive to Gangtok for nearly 2 hr and 30 mins. Soon after you reach your destination, you would be escorted to your guesthouse. After unwinding for a while in the guesthouse, you will be heading for a tourism trip of Gangtok. Prime tourist attractions that you would be visiting include Enchey monastery, Do Drul Chorten, Directorate of handicrafts and handlooms, Research institute of Tibetology and White Hall.

Located 3 km from the main town of Gangtok, Enchey Monastery is regarded as the principal sacred site in the city. Construction of this legendary monastery dates back to 200 years. Another chief paradigm of the Nyingma sect of Buddhism, Enchey monastery is supposed to be sanctified by Lama Druptab Karpo. In its early days, Enchey was basically a small hut. Later on, the present day architecture started taking place in the form of a Chinese Pagoda. The prime attractions of this lone monastery are the figurines of Lord Buddha, Loki Sharia and Guru Padmasambhava. Besides the sculpture of them, the monastery also houses primitive images of Gods and Goddesses.

Noticeable by a golden top dome, Do Drul Chorten stupa stands on a hillock. The construction of this spectacular structure has an interesting tale to narrate. It is said that once the spot of this very stupa, used to be haunted by ghouls, and caused human casualties. In order to mitigate the region of these malevolent spirits, a noted lama of Tibet, Trulshig Rinpoche arrived to this place and erected a religious stupa in the year 1946. This stupa later on was known as Do Drul Chorten. Structured along the principles of Nyingma order of Buddhism, the stupa holds great connotation. It houses 108 prayer wheels that have Buddhist hymns emblazoned over them.

After praying at these sacred sites, head towards the Research Institue of Tibetology, which is located very close to Do Drul Chorten stupa. The institute is well-known for its huge assortment of books on the traditions of Sikkim and Tibetan work. Post this, embark to Directorate of Handlooms and Handicrafts and White Hall. Then call it a day, and proceed back to your inn and retire for the night. In the evening, visit any good shopping market or a club nearby.</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> Excursion to Tsomgo Lake and Baba Mandir
								</p>
								<p class="aj">Munch a finger-licking breakfast, leave for Tsomgo Lake and Baba Mandir on the alluring heights of Sikkim. First in the outing is Tsomgo Lake which is around 39 km from Gangtok. Drive to the lake is likely to take around an hour.

Perching at an altitude of around 12,400 ft, Tsomgo Lake or Changu Lake is one of the most serene spots in the whole of Sikkim. The glacial lake is a dwelling to a number of Brahmini ducks and migratory birds. Besides its natural charm, Tsomgo lake is also a revered lake that is highly thronged by Buddhist and Hindu pilgrims. On the banks of the Tsomgo Lake lies a shrine of Lord Shiva as well. The lake also has shops selling yak cheese and trinkets, situated on its banks. After having a gala time in this natural magnificence, move towards an outstanding shrine, known as Baba Mandir.

Baba Harbhajan Singh Memorial temple or simply Baba Mandir is a holy place that stands close to the Jelep La and Nathu La in the eastern part of Sikkim. The drive is around 16 km from Tsomgo Lake, which is likely to take close to 21 mins to reach. The famous shrine of Baba Harbhajan Singh has an intriguing story to narrate. The story goes like this, there was a sepoy in the 23rd Punjab Regiment who was martyred during the Indo-China war of 1962. One of his fellow soldiers saw him in his dream, asking to commemorate a memorial in his honor. This resulted in the erection of a cenotaph by the great Indian army. This later on turned into a religious shrine. Owing to this, the shrine welcomes hundreds of devotees on a daily basis. As you will enter the temple of Baba Harbhajan Singh Memorial Temple, you will come across an assortment of possessions of the late soldier and an idol of him. This temple is highly revered by army personnels posted in the region.

By sundown, you would return to your hotel in Gangtok for an overnight stay. Make the best use of final hours of your shopping in the urban at this time.</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 from Gangtok
								</p>
								<p class="aj">Shortly after eating morning breakfast, you would be transferred to New Jalpaiguri Railway Station (119 km) / Bagdogra Airport (126 km) / Tenzing Norgay Bus Stand (113 km) from your hotel in Gangtok. This marks the farewell of our remarkable northeast holiday.</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.rajastravels.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Delightful North East 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="85249"/>
						</form>
						</div>
						
						";i:1;s:78:"Book Delightful North East with Pelling Tour - 6 Nights / 7 Days Tour Packages";i:2;s:144:"book delightful north east with pelling tour - 6 nights / 7 days tour packages, valley tour packages, gangtok, darjeeling, pelling tour packages";i:3;s:174:"RAJAS TRAVELS offers Delightful North East with Pelling Tour - 6 Nights / 7 Days tour package, budget Valley tour packages for Gangtok, Darjeeling, Pelling at exciting price.";i:4;s:439:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Gangtok, Darjeeling, Pelling"        
		                 },
		      "description": "",
		      "name": "Delightful North East with Pelling Tour",
		      "telephone": "+91-9820123553"
		    }
		    </script>
			";i:5;N;}